$ENV{'REQUEST_METHOD'}eq'POST' ? read(STDIN,$_,$ENV{'CONTENT_LENGTH'}) : ($_=$ENV{'QUERY_STRING'}); my %q = map{&UrlDecode($_)}map{m/^([^=]+)=([^=]+)$/}split/&/;
使用する上で十分に気をつけねばならないことは、上記2行の間に別の処理を挟まないことである。言い換えれば、クエリを連想配列に格納する作業は一気に行え、ということである。なぜなら、前述の如く、特殊変数$_を何回も書き換えているため、順番がずれたり、余分な処理が入ると、整合性が取れなくなり、意図しない結果を得るからである。上の2行をブロックにしてスクリプト中で使用するのが望ましいと思う。