my $re = qr/beer=(\d{2}).*(?:vodka=(\d{2}))?.*chips=(\d{3})/;
####
#!/usr/bin/perl
use strict;
use warnings;
my @strs = (
"beer=10&otherstuff&vodka=20&otherstuff&chips=100",
"beer=10&otherstuff&juice=20&otherstuff&chips=100"
);
my @targets = qw/beer vodka chips/;
for ( @strs ) {
my @matched;
for my $target ( @targets ) {
push @matched, $1 if ( /$target=(\d+)/ );
}
if ( @matched ) {
print "matched: @matched\n";
}
}
####
my @targets = qw/beer=(\d{2}) (vodka=(\d{2})) chips=(\d{3})/;
for ( @strs ) {
my @matched;
for my $target ( @targets ) {
push @matched, ( /$target/ );
}
if ( @matched ) {
print "matched: @matched\n";
}
}