use strict;
my $str = '/home/kwaadpepper/testhack
/home/kwaadpepper/testhack/TwitterReport
/home/kwaadpepper/testhack/test
/home/kwaadpepper/testhack/TwitterReport/.git
/home/kwaadpepper/testhack/TwitterReport/.gitignore
/home/kwaadpepper/testhack/TwitterReport/LICENSE
/home/kwaadpepper/testhack/TwitterReport/README.md
/home/kwaadpepper/testhack/TwitterReport/log_Error.txt
/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111731047.txt
/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111761057.txt
/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111762323.txt
/home/kwaadpepper/testhack/TwitterReport/log_reported_201511176245.txt
/home/kwaadpepper/testhack/TwitterReport/log_suspended.txt
/home/kwaadpepper/testhack/TwitterReport/twitterReport.py
/home/kwaadpepper/testhack/TwitterReport/twitter_accounts.txt
/home/kwaadpepper/testhack/TwitterReport/twitter_accounts2.txt
/home/kwaadpepper/testhack/TwitterReport/twitter_accounts2.txt.save
/home/kwaadpepper/testhack/TwitterReport/twitter_accounts3.txt
/home/kwaadpepper/testhack/TwitterReport/.git/HEAD
/home/kwaadpepper/testhack/TwitterReport/.git/branches
/home/kwaadpepper/testhack/TwitterReport/.git/config
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-applypatch.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-commit.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-push.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-rebase.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/prepare-commit-msg.sample
/home/kwaadpepper/testhack/TwitterReport/.git/hooks/update.sample
/home/kwaadpepper/testhack/TwitterReport/.git/info/exclude
/home/kwaadpepper/testhack/TwitterReport/.git/objects/21
/home/kwaadpepper/testhack/TwitterReport/.git/objects/4d
/home/kwaadpepper/testhack/TwitterReport/.git/objects/59
/home/kwaadpepper/testhack/TwitterReport/.git/objects/69
/home/kwaadpepper/testhack/TwitterReport/.git/objects/70
/home/kwaadpepper/testhack/TwitterReport/.git/objects/f9/00faba8624d5cbfee6032ad6266c6722b19457
/home/kwaadpepper/testhack/TwitterReport/.git/refs/heads
/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes
/home/kwaadpepper/testhack/TwitterReport/.git/refs/tags
/home/kwaadpepper/testhack/TwitterReport/.git/refs/heads/master
/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes/origin
/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes/origin/HEAD';
my $regex = qr/^(?:.*)testhack(?:[[:alnum:][:blank:]\\\/\._-]*)(?<!\.git|\.gitignore)$/imp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html