Steve Bertrand wrote:
...
> while ($buf = <FILE>) {
>     # $buf now contains line of file, one per each loop of while
>     $buf =~ /(\w+)/;
>     $userName = $1;
>     ...do something with $userName
> }

This is a common error. You should not use $1 without making sure the regex
did in fact match. Otherwise, $1 will have whatever value it previously had.

You need to do something like:

   if ($buf =~ /(\w+)/) {
       $userName = $1;
       ...
   }

...
> Now, to answer the remaining questions. =~ is the 'pattern match'
> operator. It's what actually fetches the first word pattern (user).
> Likewise, !~ says 'do not match'.

Well, techincally, the m// is the pattern (regex) match operator.

=~ is used to "bind" the regex match to a scalar other than $_.

-- 
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