Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: Is there a more functional regex syntax?

by kennethk (Abbot)
on Sep 18, 2012 at 16:56 UTC ( #994314=note: print w/ replies, xml ) Need Help??


in reply to Re: Is there a more functional regex syntax?
in thread Is there a more functional regex syntax?

Or, as an improvement in the regex, /^(?=(\d+))(?:\d+-)?(\d+)$/, so that both $1 and $2 are always defined. So, as 1 line,

$totals[$_] += ($range =~ /^(?=(\d+))(?:\d+-)?(\d+)$/)[$_] for 0,1;
Or more simply, if you want to keep the variables separate,
$total_min += ($range =~ /^(\d+)/)[0]; $total_max += ($range =~ /(\d+)$/)[0];

#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.


Comment on Re^2: Is there a more functional regex syntax?
Select or Download Code
Re^3: Is there a more functional regex syntax?
by smls (Friar) on Sep 18, 2012 at 17:14 UTC

    Thank, this is what I've been looking for!

    It's not extremely pretty, but it should scale nicely for the general case of needing the result of a regex string extraction as a right-hand-side value.

    PS: The regex suggested by tobyink above can make the single-line case much more readable: /(\d+)/g

      The regex suggested by tobyink above can make the single-line case much more readable

      The advantage of mine is that it actually enforces format, which may or may not be of concern. I also like that you expect two values and you get two values; a little less slight of hand for maintenance. But I do appreciate the elegance of his choice of indices.

      Also be aware you'll need to initialize @totals = (0,0) so that the index -1 doesn't map to your first term. tobyink does it, but didn't really emphasize its importance.


      #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2015-07-05 07:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls