in reply to Is there a more functional regex syntax?

I think this is the prettiest I could make it...

#!/usr/bin/perl use strict; use warnings; my @ranges = ('15', '28-31', '3-4', '40', '17-19'); my @totals = (0, 0); foreach my $range (@ranges) { $totals[$_] += (split /-/, $range)[$_] for 0, -1; } print "total is between $totals[0] and $totals[-1]\n";

... it's arguably less readable though.

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^2: Is there a more functional regex syntax?
by smls (Friar) on Sep 18, 2012 at 16:42 UTC

    Nice trick using the -1 index like that, I'll have to remember that...

    Regarding the original question though, I was hoping for a solution that keeps the regexes, because even if replacing them with split is possible in this case, that won't always be feasible if dealing with more complex regexes.

      Some regexes will work inside those parentheses.

      $totals[$_] += ($range =~ /(\d+)/g)[$_] for 0, -1;
      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'