Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: regx

by swiftone (Curate)
on Jan 24, 2003 at 00:09 UTC ( #229490=note: print w/replies, xml ) Need Help??


in reply to regex not working

This has been answered , but I'll explain some of the details:

The s/// command returns either the number of replacements ( in scalar context (i.e. one value)), or the values of any captured patterns in list context. (e.g. ($foo, $bar) = s/(my)(.*)// will assign "my" to $foo and anything else to $bar)

By default s/// operates (performs the search and replace) on $_. You can bind another variable to be search-and-replaced with =~. Thus, the following is perfectly valid code:

$baz = "mythingie"; ($foo, $bar) = $baz =~ s/(my)(.*)//;
and will result in $foo = 'my', $bar = 'thingie', $baz=''; Note that $foo and $bar will be undefined if the search pattern does not match. It's a common mistake to assume the pattern works. It's probably better to have code like:
use strict; $baz = 'mythingie'; if($baz =~ s/(my)(.*)//){ #s/// returns '' (which is false) if it doesn't match. #No, I don't know why it doesn't return 0. $foo = $1; $bar = $2; } else { warn 'I thought this would always match, but I must be wrong'; }
The same general rules apply to m//, though of course there is no replacement, and the bound variable is not altered.

All of this is covered in perlop, though it's buried in there a ways.

Hope that helps!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://229490]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (7)
As of 2016-10-01 18:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?






    Results (3 votes). Check out past polls.