From: "Chas. Owens" <[EMAIL PROTECTED]> > On Oct 24, 2008, at 11:00, "Sharan Basappa" <[EMAIL PROTECTED]> > wrote: > > > Hi, > > > > I was just trying to match a string and save it in a single statement > > as follows: > > > > $extracted = "cp xyz"; > > $state_var = $extracted =~ m/cp\s+(.*)/; > > print "$state_var $1 \n"; > > > > The output is: 1 xyz > > > > So the assignment to $state_var does not work. Is this an incorrect > > way. > > > > Regards > > In scalar context a match returns true if it matches or false if it > doesn't. You want to use list context to cause the match to return > the captures: > > ($var) = $foo =~ /(blah)/;
It's not required, but this is one of the places where I would use explicit braces. ($var) = ($foo =~ /(blah)/); Not so much because the left hand side is in braces, but because I'm never really sure which one, = or =~, has higher precedence. Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/