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/


Reply via email to