CGI->new() のように引数なしでnewするケースが殆どだと思いますが、CGI->new( "query param 形式な文字列" ) で利用すると、cgiの引数(query param)を簡単にパースできます。
※しかもurl decode付き
※apacheのaccess_logをparseする際にも使えそう
#!/usr/local/bin/perl use strict; use CGI; use Data::Dumper; #http://hot.exist.example.jp/test.pl のquery param my $text = join('&', 'url=http%3a%2f%2fwww%2egoogle%2eco%2ejp%2f', 'checked=tanaka', 'checked=suzuki'); my $cgi = CGI->new($text); print Dumper($cgi);
実行結果
$ ./foo.pl $VAR1 = bless( { '.parameters' => [ 'url', 'checked' ], 'use_tempfile' => 1, '.charset' => 'ISO-8859-1', '.fieldnames' => {}, 'param' => { 'checked' => [ 'tanaka', 'suzuki' ], 'url' => [ 'http://www.google.co.jp/' ] }, 'escape' => 1 }, 'CGI' );