use URI qw( ); my %fields = URI->new('?'.$str)->query_form(); say "fields present" if exists($fields{ beer }) && exists($fields{ vodka }) && exists($fields{ chips }); say "matches" if ($fields{ beer } // "") =~ /^(?:[0-9]{2})\z/ && ($fields{ vodka } // "") =~ /^(?:[0-9]{2})\z/ && ($fields{ chips } // "") =~ /^(?:[0-9]{3})\z/;