Dan Langille wrote: > > Hi, Hello,
> I have a perl regex to test if a file resides under a particular > directory. The test looks like this: > > if ($filename =~ $directory) { > # yes, this filename resides under directory > } > > This is working for most cases. However, it fails is the directory > contains a +. For example: > > $filename = 'ports/www/privoxy+ipv6/files/patch-src::addrlist.c'; > $directory = "^/?" . 'ports/www/privoxy+ipv6' . "/"; > if ($filename =~ $directory) { > # yes, this filename resides under directory > } > > Yes, I can escape the + in the directory name, but then I'd have to > test for all special regex characters and escape them too. That > sounds awfully complicated. ;) > > I think it might just be easier to do a straight comparison of the > first N characters of the two strings where N = length of the > directory name. > > Any suggestions? You could use the index function: if ( index( $filename, $directory ) >= 0 ) { # yes, this filename resides under directory } perldoc -f index If you want to use a regular expression then you need the quotemeta escape sequence: my $filename = 'ports/www/privoxy+ipv6/files/patch-src::addrlist.c'; my $directory = qr(^/?\Qports/www/privoxy+ipv6/\E); if ( $filename =~ /$directory/ ) { # yes, this filename resides under directory } perldoc -f quotemeta perldoc perlre perldoc perlop John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]