http://www.perlmonks.org?node_id=848925


in reply to Re: Extracting text from a line
in thread Extracting text from a line

print $fh $uid if $uid;

you meant to say
print $fh $1 if $uid;
I guess.

update almut was right
I thought it was scalar context, missed to notice that "(" ")" => "list context" ,my mistake :-).
Thanks to almut and pemungkah



Vivek
-- 'I' am not the body, 'I' am the 'soul/consciousness', which has no beginning or no end, no attachment or no aversion, nothing to attain or lose.

Replies are listed 'Best First'.
Re^3: Extracting text from a line
by almut (Canon) on Jul 12, 2010 at 07:28 UTC

    What's the difference, semantically?

    Note that in list context (my ($uid) = ...), the match operation returns the captures, so $uid holds the same value as $1.  If there is no match, both values are undef.

      Vivek, I strongly disagree with you here because of the fact that the number variables are very fragile: they are global to every pattern match.

      If someone else comes along and adds (for instance) a"harmless" subroutine call that sometimes does a pattern match of its own between the match and the usage of $1, then the results are unpredictable because the intervening match has reused the global variables.

      If you always capture the value in a separate variable immediately, you're safe from this potential bug.