Cute! ++ of course. I find it fascinating how you can use ingenuity to spoof these types of filters. Here is one that provides more utility and of course patches your hack.
sub ilya_proof_path {
my ( $path ) = @_ ;
return '' unless $path;
my ($type, $domain, $q_string );
( $path, $q_string ) = split '\?', $path;
$q_string =~ tr/\0//d if $q_string;
1 while $path =~ s/%([0-9a-fA-F]{2})/chr hex $1/ge;
$path =~ s!\\+!/!g;
$path =~ s![^\w \Q-:./#\E]!!g;
$path =~ s!\.\.*/!!g;
$path =~ s/^\s+//g;
$path =~ s/ +/ /g;
$type = $1 if $path =~ s!^(\w+):/+!!;
$domain = $1 if $type and $type =~ m/(?:https?|ftps?)/ and $path =~
+s!^([\w\.-]+)/!!;
# tolerate win32 drive letters as a pseudo domain
$domain = $1 if $type and $type =~ m/file/ and $path =~ s!^([A-Z]:)/
+!!;
return $path, $type, $domain, $q_string ;
}
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print