cricket とは SNMP を使って様々な機器から情報を取得し,CGI でグラフまで作成するという代物です.
ぼくはその CGI を愛でては溜息をつく,みたいな憂いのある午後を過ごしてたんですけど,どうも CGI に渡すパラメータがセミコロン (';') で区切られている.
あーあ,独自使用かよ嫌になるよなー,意味わかんないところこだわるなよなーとか思ってたところ,CGI.pm のソースをふと見ると,なんかさ,ばっちしセミコロンにも対応してんだけど!!!!
sub parse_params { my($self,$tosplit) = @_; my(@pairs) = split(/[&;]/,$tosplit);
これなんで! 独自仕様じゃなかったんや!!
RFC 見ても別にそんなの書いてないっぽいしなー,これどこで決まってんだろうとか思って Web を漁ってみてたら,どうも W3C で推奨されているらしい.
Unfortunately, the use of the "&" character to separate form fields interacts with its use in SGML attribute values to delimit character entity references. For example, to use the URI "http://host/?x=1&y=2" as a linking URI, it must be written <A href="http://host/?x=1&y=2"> or <A href="http://host/?x=1&y=2">.
We recommend that HTTP server implementors, and in particular, CGI implementors support the use of ";" in place of "&" to save authors the trouble of escaping "&" characters in this manner.
Performance, Implementation, and Design Notes
なるほどなるほど.
Perl は CGI.pm だけど,Ruby もバッチシ対応しているみたいですから,とてもよかったですね.