use URL::Deconstruct; my $my_request = URL::Deconstruct->from_spec( q'/(?)/(?)/(?\d+)?order_by=(\w+)' ); if (my %params = $my_request->match('/beer/drink/1?order_by=11') { print "$params{model}\n"; # beer print "$params{order_by}\n"; # 11 }