Freek de Kruijf <f.de.kru...@gmail.com> writes:

> Hi,
>
> I am trying to understand fully a perl program with the following lines:
>
>    } elsif( /^(\#?\s*(?:pickup|qmgr)\s+)(?:fifo|unix)(\s+.*)/ ) {
>       if( defined $normalize->{$1} ) { next; } else { $normalize->{$1} = 1; }
> I do understand the first line, but I can not find what the second line is
> about.

$1 contains the content of the first capturing group in the matching
regexp. in this case, "#pickup", "#qmgr", "pickup", "qmgr"... etc.

$normalize->{$1} means: getting the corresponding value of $1 from the
HashRef $normalize.

$normalize->{$1} = 1 means: setting the corresponding value of $1 to 1.

`next` is a keyword for skipping the rest of loop, so it would seem to
me that these 2 lines is inside of a loop. I'm guessing $_ is the
iterator of the loop. Assuming that's the case, it appears to me
$normalize is used to keep track the occurance of the captured
words. Not how may times they occur, just if they occur or not.

--
Cheers,
Kang-min Liu

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to