use strict;
my $str = '<?php
echo "<title>kod3 Uploader</title>";
echo "<form method=\'post\' enctype=\'multipart/form-data\' name=\'uploader\'>";
echo \'<input type="file" name="file" ><input name="upl" type="submit" id="upl" value="Upload"></form>\';
if(isset($_POST[\'upl\'])&&$_POST[\'upl\']== "Upload"){
if(@move_uploaded_file($_FILES[\'file\'][\'tmp_name\'], $_FILES[\'file\'][\'name\'])){
echo \'Upload Successfully ;)<br><br>\';
}else{
echo \'Upload failed :(<br><br>\';
}
}
?>';
my $regex = qr/^(?:[[:^print:][:cntrl:]\s]|GIF89.{0,20})*<\?(?:php)?\s*echo\s*['"]<title>kod3 uploader<\/title>.{0,70}?multipart\/form-data["']\s*name=["']uploader.{0,240}?\@move_uploaded_file\(\$_files\[["']file['"]\].{0,50}?echo\s*['"]upload\s*successfully.{0,60}?[[:punct:]\s]+$/isp;
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