First, CGI.pm will parse the QUERY_STRING so you don't need to, and likely more cleanly than you. Secondly, your little lines of code above will not work with CGI scripts. Why would someone even try to use @ARGV with CGI? Currently, CGI.pm may be slightly bulky, but it does its job well, is maintained, and if it is so expensive for you to use, you need to upgrade your hardware.