CGI.pmを使ってシェルからパラメータを受け取る

use CGI;
my $q = new CGI;
foreach my $key ($q->param) {
    print "$key : ".$q->param($key)."\n";
}

ごく普通にnewするだけで何の工夫もなし。それだけで次のコマンドは期待通りに動作してくれる。

$ perl sample.pl "key1=Hello+World&key2=%a5%c6%a5%b9%a5%c8"
key1 : Hello World
key2 : テスト

パラメータを引数単位で分割しても、結果は全く同じになる。

$ perl sample.pl key1=Hello+World key2=%a5%c6%a5%b9%a5%c8

通常はGET/POSTで実行されるCGIを、シェルからもパラメータ付きで実行したいといった場合にきっと便利。例えば、システムからの呼び出しが前提で応答がHTMLでないようなもの(いわゆるWebAPIとか)を、ローカルにある別のプログラムから呼び出して出力を得たいとか。

なお、その場合は実行時のディレクトリや環境変数は異なってくる可能性が高いので、コーディングの際には注意が必要。