> 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.
This is precisely why I joined this list. Although a very small oversight, potentially a very dangerous one within 500 lines of code :o) > 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 $_. Thank you for the clarification. Steve > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>