Beginner am Dienstag, 28. November 2006 11:55: [snipped for brevity, sorry]
> Thanx Dani and John, > > I should have realised that the that I was making the substitiution > on the full path and not the basename. > > I appreciate you showing me how to shorten the code. Can I ask if I > am reading it right. > > foreach my $basef (map basename ($_), @files) { > (my $l) = ($basef =~ /([a-z]{1,2})\.jpg$/); > > Does this basename everything in @files and make it $basef? Yes, every file in @files is "piped" through map witch applies the basename function, and the result is stored in $basef, used within the foreach loop. For the powerful map function see: perldoc -f map > In John's example I am not sure what is happening with this RegEx: > ( my $new = $f ) =~ s/([a-z]{1,2})(?=\.jpg\z)/_a/; First, $f is copied into $new and the regex is applied to $new. (?=something_here) is a positive lookahead not actually matching something_here. The regex sais: "match one or two a-z chars that are followed by the string '.jpg', and replace this/these char(s) with '_a'". See perldoc perlre > There are 2 sets of parentheses but one lvalue, $new. So is that any > character a-z, 1 or 2 times and the ? mean 1 or more times? No, the question mark is part of the '(?=)' construct, all described in perlre. > What is the \z switch here? I can find it is perlre. It's under the paragraph "Perl defines the following zero-width assertions" (btw, at least on linux, you can call the search funktion by typing a '/' while viewing) Dani -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>