綾小路龍之介の素人思考

結論:クエリを連想配列に格納する最もスマートな方法

最終的には2行で事足りる。1行目でクリエの取得機能、2行目で連想配列格納機能を実現している。以降スクリプトの中で使われるであろうハッシュ%qを作るまでに、これ以外の自分で定義した変数は1つも使われていない。全て特殊変数$_で話をつけている。特殊変数$_はmy宣言できないのはもちろんのこと、グローバル変数である。

$ENV{'REQUEST_METHOD'}eq'POST' ? read(STDIN,$_,$ENV{'CONTENT_LENGTH'}) : ($_=$ENV{'QUERY_STRING'});
my %q = map{&UrlDecode($_)}map{m/^([^=]+)=([^=]+)$/}split/&/;

使用する上で十分に気をつけねばならないことは、上記2行の間に別の処理を挟まないことである。言い換えれば、クエリを連想配列に格納する作業は一気に行え、ということである。なぜなら、前述の如く、特殊変数$_を何回も書き換えているため、順番がずれたり、余分な処理が入ると、整合性が取れなくなり、意図しない結果を得るからである。上の2行をブロックにしてスクリプト中で使用するのが望ましいと思う。

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2008-01-25T05:58:48+09:00
  2. Modified: 2008-01-25T05:27:52+09:00
  3. Generated: 2017-01-01T23:09:41+09:00