c:\@Work\Perl\monks>perl -wMstrict -le "my $x = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15'; print qq{'$x'}; ;; printf qq{'$+{weight}' } while $x =~ m{ (? \d+) }xmsg; " '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15' '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' '15' #### c:\@Work\Perl\monks>perl -wMstrict -le "my $rx_weight = qr{ (? $rx_weight) \s* (? $rx_units) }xmsg ) { my ($weight, $units) = @+{ qw(weight units) }; print qq{for debug: got '$weight' '$units'}; if ($units =~ m{ (?i) kgs? }xms) { print qq{metric: $weight}; } elsif ($units =~ m{ (?i) lbs? }xms) { print qq{English: $weight}; } else { print qq{unknown units '$units': $weight}; } } " '12 lbs 234 kgs 567 groats foo42kg7lb' for debug: got '12' 'lbs' English: 12 for debug: got '234' 'kgs' metric: 234 for debug: got '567' 'groats' unknown units 'groats': 567 for debug: got '42' 'kg' metric: 42 for debug: got '7' 'lb' English: 7