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>


Reply via email to