![]() |
| カレッヂ |
質問者 ぶー
投稿日 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裏技 |