Perlの謎挙動
※ 解決してません。
QUERY_STRINGまわりの挙動がよくわからないって話。
環境
- Windows 7 64bit
- Strawberry Perl (64-bit) 5.20.0.1-64bit
- Google Chrome 37.0.2062.124
本文
GETで値を受け取って、そのまま画面に書き出すだけの簡単なPerl/CGIを書いた。
test.pl
use utf8; use strict; print "Content-type: text/plain; charset=utf-8\n\n"; my $get = $ENV{QUERY_STRING}; print $get; print "\n"; &result; sub result { print $get; }
これを
http://localhost/test.pl?hello
として呼び出した。
想定では、以下の表示がされるはず・・・
hello hello
確かにその通り表示された。
しかし、次に
http://localhost/test.pl?bye
として呼び出した。もちろん、
bye bye
となることを予想したが、実際には下記のようになった。
!?
なぜか、最初に指定した値を保持したままになっている。
http://localhost/test.pl?hoge にアクセスするも、
・・・・・わけがわからないよ!
試しに、下記のように書き換えてみた。
use utf8; use strict; print "Content-type: text/plain; charset=utf-8\n\n"; print $ENV{QUERY_STRING}; print "\n"; &result; sub result { print $ENV{QUERY_STRING}; }
http://localhost/test.pl?hello
ちゃんと表示されてるし!
こんなの絶対おかしいよ!
どうやら、ファイルを書き換えた時に、2行目が更新されるらしいことはわかった。
実はすごい初歩的なことなのかもしれない。
さて、どうしたもんでしょう。