in reply to shrinking the path

A few remarks:

The resulting code is:

if($folder_path =~ s/^\Q$sourcedir/Eitv9/) { print "\n$folder_path/$file";}

Oh and if the path comes from the user using STDIN, don't forget to chomp it first.

Replies are listed 'Best First'.
Re^2: shrinking the path
by prad_intel (Monk) on Feb 01, 2005 at 11:18 UTC
    Thanks bart !

    it worked , even before posting i tried what boris had suggested but that lead to a failure why ?

    prad
      The difference is in my use of quotemeta, \Q inside the regex. His version uses your string as a regex, mine turns it into a literal search.

      Here is a simple demo for what's going on:

      my $string = 'c:\\Windows'; my $search = '\\W'; my $qm = quotemeta($search); my $raw = $string; $raw=~ s/$search/#/; my $cooked = $string; $cooked =~ s/\Q$search/#/; print <<"TEST" original string: '$string' search string: '$search' search string after quotemeta: '$qm' substitution without \\Q: '$raw' substitution with \\Q: '$cooked' TEST
      Result:
      original string: 'c:\Windows'
      search string: '\W'
      search string after quotemeta: '\\W'
      substitution without \Q: 'c#\Windows'
      substitution with \Q: 'c:#indows'
      
      As you can see, with quotemeta, it replaced the substring backslash+"W", because that's what /\\W/ searches for. Without it, it just searched for the first non-word character and replaced it — that happens to be a ":".