![]() |
カレッヂ |
質問者 ぶー
投稿日 9/25(木) 18:40:40
---------------------------------------------------------------------- require 'jcode.pl'; for(split(/&/, $query_string)) { my ($name, $value) = split(/=/); $value =~ tr/+/ /; $value =~ s/%([0-9A-F]{2})/pack("C", hex($1))/egi; $value =~ s/[\r\n]+/\n/g; #jcode::convert(\$value, 'sjis'); # 何故かこれだとコケる↓では使えるのに jcode'convert(*value, 'sjis'); # これは通る $FORM{$name} = $value; } ... 省略 ... jcode::convert(\$mail, 'jis'); # 上はダメだけど、ここは通る ---------------------------------------------------------------------- CGIフォームからのパラメータの取得で、jcodeを使用しています。 上記のようなコードですが、 下のjcode::は正常に動作しているのに、 for()の中の方は失敗してしまいます。 jcode'の記述にすると、動作します。 なお、残念ながらサーバのエラーログは見れません。 jcode jcode.pl,v 2.3 1997/02/23 perl version = 5.003 SERVER_SOFTWARE = Apache/1.2.6 とりあえず、jcode'の記述でうまく動いているので問題はないのですが、 悔しいので原因を知りたいです。 どなたか教えてください。
プロバイダ参照: |
回答者 まさ
[削除]
投稿日 9/25(木) 19:33:09
>my ($name, $value) = split(/=/); このmyを取れば上手く行くでしょう。 |
質問者 ぶー
[削除]
投稿日 9/26(金) 13:27:01
自己レスです。 結局、jcode.plのバージョンが古いのが問題だったようで、 新しいものにしたところ、無事動作しました。 jcode.pl,v 2.3 1997/02/23 → ダメ jcode.pl,v 2.13 2000/09/29 → OK バージョンが下がっているのは気のせいでしょうか!? でもとにかく、"v.2.3"はperl5以前のものので、"v2.13"はperl5 インタフェースの記述があります。 ちなみに、use strictしてます。 v2.3では、use strictを外して、my をなくしても、動作しませんでした。 でも、下のjcode::convertが通っていたのが謎です…。 ご回答どうもありがとうごさいました。>まささん |
返信(回答)する
Web裏技 |