/[?&]([^=]+)=([^=&]+)/g
Это будет соответствовать любому не = символу, отделенному символом =, и помещать их в $ 1 и $ 2.
или ...
my %argsHash = split(/=|&/, $args);
Это даст вам хэш с параметрами и значениями, который, кажется, работает хорошо, но CGI.pm лучше подходит для всех.