トップページ⇒php
1001コメント331KB

【Perl】初心者コーナー Part18

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/11/20 22:04ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

CGIだけど、なんか質問ある? Part 8
http://pc.2ch.net/test/read.cgi/php/1032704121/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
00525002/11/26 22:33ID:kEoHEjhG
>>51
ボタンの値を見ておいて・・・というとどういう事ですか?
フォームタグではなくてCGI側の問題ですか?
0053アシトン?02/11/26 22:43ID:???
>>50
aciton=
0054nobodyさん02/11/26 22:54ID:???
アシトンワロタ
00555002/11/26 22:54ID:kEoHEjhG
>>53
た、たしかにスペルは間違ってますが、、、

でもクリックだと認証に飛びますけどね・・
0056nobodyさん02/11/26 23:03ID:???
>>55
それはブラウザ依存だ。
IEの場合、formタグのaction属性がない場合、action属性を自分自身に設定する。
だから、クリックだと自分自身に飛ぶ。
0057nobodyさん02/11/26 23:07ID:???
>>55
クリックすると、type="submit" のnameとvalueが渡される。Enterキーだと
それが渡されない。
だから、type="password" のほうのnameとvalueだけ見て処理しろと>>51は
言っている。
00585002/11/26 23:08ID:kEoHEjhG
>>57
なるほど、分かりました。
どうもすみません
0059nobodyさん02/11/26 23:11ID:???
>>45
Perlでデータベースを扱おうと思ったら、その仲立ちをするモジュールを使うのが楽でいい。
Pg.pmはPostgreSQLとの接続専用のモジュール。
だが、DBI.pmとPostgreSQL用のDBDの組み合わせでも同じことができる。
(細かいやり方は違うだろうが)

同じことをするのに二つのモジュールを使うのは無駄だと思うかも知れないが、
こうしておくと、将来別のデータベースを使わなければならなくなった時に、
DBDを差し替えて、スクリプトをちょっと(多分一行)だけ変更すれば、
そのまま動くようになると言う利点がある。

これからの生涯でずっとPostgreSQLしか使わないと言うのであれば構わないが、
そうでなければ、DBI.pmを使うことを勧める。

ま、どっちを選ぼうが自由なんだがな。
0060nobodyさん02/11/26 23:28ID:???
すんません、PalmOSで動くPerlってないですか?やっぱ
0061nobodyさん02/11/27 00:38ID:???
開発順調
http://palmperl.sourceforge.net/
00626002/11/27 01:46ID:???
>>61
全然順調じゃないじゃん




ぇゃ、ほんと有り難うございますた、なんかスゲェ質素なページでしたが(藁
検索しても引っかからなかったんですけどねぇ…
完成を心待ちにしときます
0063nobodyさん02/11/27 09:27ID:???
awk '$1 >=130 && $1 <=170 && $2 >=30 && $2 <=60 {print $0}' tmp1 > $ofile
か
perl -F" " -ane 'if($F[1] >=130 && $F[1] <=170 && $F[2] >=30 && $F[2] <=60) {print $_;} tmp1 > $ofile
か
perl -F" " -i.ofile -ane 'if($F[1] >=130 && $F[1] <=170 && $F[2] >=30 && $F[2] <=60) {print $_;} tmp1
はどれが一番速いのですか?


0064nobodyさん02/11/27 10:37ID:???
#!/bin/csh
set min = `awk '$3 <= 0.9 {print $0}' aho.txt | sort +1 -n | head -n 1`
echo min[1]

foreach time ( 90621)
  ifile = hoge${time}.txt
  set gyou = `awk '$1 == '$time' {print NR}' date.txt`

  awk 'NR >= '$gyou' && NR <= ('$gyou' + 80) {print $0}' date.txt > tmpA
  paste $ifile tmpA > tmpB
  awk '( NR % 2 ) == 0 {print $0}' tmpB > tmpC
  set gyousu = `awk '$5 > 0 {print $0}' tmpC | wc -l`

  if ( $gyousu == 40 ) then
       set temae = 40
  else if ( $gyousu < 40 ) then
       set aaa = `awk '$5 < 0 {print NR}' tmpC | head -n 1`
       set temae = `awk 'NR < '$aaa' {print $0}' tmpC | wc -l`
  endif
  echo $temae
end
0065nobodyさん02/11/27 10:41ID:???

set min = `awk '$3 <= 0.9 {print $0}' aho.txt | sort +1 -n | head -n 1`
echo min[1]
と
set gyou = `awk '$1 == '$time' {print NR}' date.txt`

awk 'NR >= '$gyou' && NR <= ('$gyou' + 80) {print $0}' date.txt > tmpA
paste $ifile tmpA > tmpB
awk '( NR % 2 ) == 0 {print $0}' tmpB > tmpC
set gyousu = `awk '$5 > 0 {print $0}' tmpC | wc -l`

をそれぞれperlで書くとどのような感じになりますか?

いいかげんな感じでいいので、perlの構文教えてください。
調べてたら、卒論かけません。

本来のcshスクリプトでは
foreach time ( 90621 90609 90521 90509 83021 83009 81821 81809 81721 81709 81621 81609 81521 81509 80821 80809 80721 80709 80621 80609 80521 8050
9 80421 80409 80221 80209 72921 72909 72821 72809 72721 72709 72621 72609 62121 62109 61021 61009 60921 60909 60821 60809 52209 50521 50509 50421
50409 50321 50309 50221 50209 50121 50109 43021 )
となっており、このスクリプトでは遅すぎて、話しになりません

アフォですみません。
0066nobodyさん02/11/27 10:51ID:???
20021231
という、YYYYMMDDという日付データがあった場合に、
「今日からあと何日でその日が来るか」を算出するのにはどうしたらいいのでしょうか。
00676602/11/27 10:55ID:???
あと、
例えば、20020631という日付データがあって、
その日から3ヶ月後は何日か求めたい時はどうすればいいですか。
普通に20020931にしても、9月は31日が無いかもしれないですし、
うるう年とかで2月は28日だったり29日だったりしますよね。。
0068nobodyさん02/11/27 10:56ID:???
卒業しなくて良いよ。
0069nobodyさん02/11/27 11:04ID:???
>66
timelocal()を使うと楽。

>67
じゃあ、8月31日の3ヵ月後の11月31日が存在しなかった場合はどうするの?
なかった場合どうするかを先に決めないと何もできない。
00706602/11/27 11:24ID:???
>>69
11月31日が存在しなかったら次の日の12月1日になると思います。
0071nobodyさん02/11/27 11:30ID:???
>70
なると思いますじゃねーだろ。
どういう仕様にしたいか決めないと出来ないってんだよ。
0072nobodyさん02/11/27 11:32ID:???
んで、
>70は>66-67みたいな事がしたくて
それでどんな風にやってみて、
それだとどんなエラーが出て上手く行かなかった
んだ?

自分で何もせずにやり方聞いてるわけじゃないよな?
>1読め。
0073nobodyさん02/11/27 11:33ID:???
>>71
オマエのほうが勘違いしてないか? よく読め
0074nobodyさん02/11/27 12:01ID:???
掲示板から入力した文字データの文字数を数えて、
その文字数分、処理をループさせたいのですが、
これだと何も出来ませんでした…。

要するに、入力されたひらがな($tango)を、
ローマ字に変えてファイルに書き込みたいって事なんですが…。

$mojisu = length $tango;
while ( $x < $mojisu ){
$moji = substr($tango,$x,2);
if ($moji = "あ"){print $romaji "a"};
         ・
         ・
         ・
$x = $x+2;
}
0075nobodyさん02/11/27 12:16ID:???
>>74
文字コードは?
0076nobodyさん02/11/27 12:20ID:???
>74
ttp://www.din.or.jp/~ohzaki/perl.htm#JP_Split
これ参考にしてみ。
0077nobodyさん02/11/27 12:22ID:???
>>74
$tango =~ s/あ/a/g;
$tango =~ s/い/i/g;
ずら〜っとコレじゃダメですか?
でも、「っ」とかって大変そう・・・
後に来る文字で変わるでしょ・・・
0078nobodyさん02/11/27 12:24ID:???
>>74
($moji = "あ") じゃダメだろ
基礎から勉強しなおせ
0079nobodyさん02/11/27 16:24ID:???
>>74
それじゃ$mojiに"あ"を代入してから$mojiを評価してるぞ(よーするに真になる
0080nobodyさん02/11/27 17:38ID:37dF+px+
\x82\xb3\x82\xa0\x82\xc7\x82\xa4
って文字コードになってるファイルがあるんですが
コレを元の文字に置換するようなやつはどのように書けばいいんでしょうか?
0081nobodyさん02/11/27 17:46ID:???
ネタ
0082nobodyさん02/11/27 19:08ID:???
どいつもこいつも、教えんのは善意だぞ、聞く香具師が偉そうにスンナヴォケ!

一生独りでシコってろ!!
0083nobodyさん02/11/27 21:43ID:???

ドピュッ

0084nobodyさん02/11/27 22:06ID:Op374sN2
1296(10進表示)までの数値を、36進法のリストにして、参照できるようにしたいのですが、

$in = 500;   #10進法で入力された数値
for($i = 1;$i < 1297;$i++){
    $c[$i] = $h.$j++;
    if($j eq "10"){$j = "a";}
    elsif($j eq "aa"){$j = "0";
    $h++;
    if($h eq "10"){$h = "a";}
    }
}
$out = $c[$in];    #36進法で出力される数値

効率のいいコードはないでしょうか?
0085nobodyさん02/11/27 22:42ID:wgGugnNo
$in = 500;

$after = array('0','1','2','3','4','5'..........'z');
$a = floor($in /36);
$b = $in % 36;

$out = $after[$a].$after[$b];

echo $out;
00868502/11/27 22:45ID:wgGugnNo
ゴメン。Perlだったか。

$in = 500;
@after = qw(0 1 2 3 ... z);

$a = int($in / 36);
$b = $in % 36;

$out = $atter[$a].$after[$b];
00878402/11/27 22:54ID:???
>>85
なんとなくわかりました。Perlにしてやってみます。
00888402/11/27 22:56ID:???
>>86
あ、ありがとうございます!
考えてたら>>86が遅レスになってしまいました・・・
感謝です!!
0089nobodyさん02/11/27 23:01ID:XpHW8B1z
$in = 500;

$out = (0..9,a..z)[int($in/36)] . (0..9,a..z)[$in%36];
00908402/11/27 23:11ID:???
>>88
すいません日本語おかしいですね。
とにかく感謝です

>>89
ありがとうございます!!
すごく効率的ですね
0091nobodyさん02/11/27 23:17ID:???
効率的って。。。
0092nobodyさん02/11/27 23:28ID:???
codeがみじけぇってこったろ
0093nobodyさん02/11/28 00:49ID:???
(・∀・)タンショウ!!
0094nobodyさん02/11/28 07:22ID:???
(・∀・)ホケーイ!
00957402/11/28 11:13ID:???
皆さんのレスとても参考になりました。
今のところ全くの初心者なものでご迷惑をお掛けしました。
とりあえず>>77さんのやり方で出来ました。
「っ」や「ゅ」等については後で考えます。
皆さんありがとうございました。
0096nobodyさん02/11/28 12:20ID:AB88ovMQ
すいません。環境変数が存在するか無いかを判定したいのですが
どうしたら良いでしょうか?
if( $env(HTTP_REFERER) == NULL)
流石にこれじゃだめっすよね…
0097nobodyさん02/11/28 12:39ID:???
if ($ENV{'HTTP_REFERER'} eq '')
0098nobodyさん02/11/28 12:40ID:9pvjX8Vy
>>96
unless( $ENV{HTTP_REFERER} ) {
.
}
0099nobodyさん02/11/28 12:40ID:FjFqkJQz
if(exists $ENV{HTTP_REFFERER})
ではだめでつか?
0100nobodyさん02/11/28 12:46ID:???
>>99
存在していても、値がないかもしれん。。。

>>98
このばやいはそれでもいいが、値が 0 の環境変数には適さない。。。
0101nobodyさん02/11/28 13:00ID:???
>>97
値が''の環境変数には適さない。。。
0102nobodyさん02/11/28 13:06ID:???
>>101
?
0103nobodyさん02/11/28 13:17ID:n94VkAjj
if (defined %ENV) {...}
0104nobodyさん02/11/28 13:16ID:???
>>100
>環境変数が存在するか無いかを判定したいのですが
というお題なので、exists でいいんじゃないか?
0や''を検出するなら、まず仕様を決めてもらわんと。
01059602/11/28 13:22ID:cubtANrC
レスありがとうございます。
CGIを重複で利用したいので
フォームからアクセスしたときと表示するだけでアクセスした時
に分けたかったんです。
フォームからアクセスした時にはQUERYなりCONTENT?なりに
残るじゃないですか。
それを判別したかったんです。
いろいろ御意見ありがとです。。
0106nobodyさん02/11/28 13:24ID:???
ttp://xx.alpha-sv.com/vf4/cgi/update_ar.cgi
上のCGIが作りたいのですが、どうすればいいですか?
初心者なうえに知識がないんで…
教えてください。
0107nobodyさん02/11/28 13:41ID:n94VkAjj
>>106
該当するweb管理者にお問い合わせ下さい。
0108nobodyさん02/11/28 14:47ID:???
>107
業務口調ワラタ
0109nobodyさん02/11/29 02:18ID:???
>>106
初心者に掲示板の制作は無理だから諦めれ。

(余談だけど、初心者って掲示板の設置のことを「作り方」って聞くときがあるんだよなー)
0110nobodyさん02/11/29 11:03ID:YJ7YkLxM
お願いします。
文字列を一定の長さまで比較したいんですけど
標準関数ありますか?
Cでいえばstrncmpみたいなものです。
できれば、今後自力で調べる方法も教えて頂けないでしょうか。
0111nobodyさん02/11/29 12:26ID:???
if (substr($s1, 0, 1) eq substr($s2, 0, 1)){ hoge; }
0112nobodyさん02/11/29 17:54ID:nCXK5uR+
「DBI.pm」の「pm」って何??モジュール化されてるってこと?
メモリ上にロードされっぱなしになって速度が速くなったりするの?

あと、自分のperlソースをpmにすることはできますか?

webで調べたけど情報が無かったです。
0113nobodyさん02/11/29 18:04ID:???
>>112
> webで調べたけど情報が無かったです。
http://www.kt.rim.or.jp/~ekbk/perl5.005/perlmod.html
0114nobodyさん02/11/29 18:08ID:FGwKAXnr
例(1)
print <<HERE
テスト
HERE;

例(2)
print "テスト";

例(1)と例(2)ではどちらが表示が速いでしょうか?
0115nobodyさん02/11/29 18:28ID:???
winXP pro + activeperl build 633で実験
●ソース
use Benchmark;
timethese(1000000,{
'ex1'=>sub {
print "テスト\n";
},
'ex2'=>sub {
print << "EOM";
テスト
EOM
}
});
●結果
Benchmark: timing 1000000 iterations of ex1, ex2...
ex1: 40 wallclock secs ( 5.84 usr + 5.25 sys = 11.09 CPU) @ 90203.86/s (n=1000000)
ex2: 49 wallclock secs ( 6.26 usr + 5.56 sys = 11.82 CPU) @ 84631.01/s (n=1000000)
●結論
気にするほどの差はない
0116の02/11/29 20:42ID:vqpWO9fR
>>112
> 「DBI.pm」の「pm」って何??モジュール化されてるってこと?

単なるファイル名。use を使ったとき、名前+".pm" で読み込むくらいです。
普通中身はモジュールのための構造を持たせるけど、別に何か規定されてるわけじゃない。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/
0117nobodyさん02/11/29 22:23ID:JObUfqd/
現在実行中のコードの行番号を調べることってできますか?
0118nobodyさん02/11/29 22:23ID:lYLiGnC/
ABCADEAFGAHI
という文字列があったとして、
例えば3つ目のA以降の文字列を除去するにはどうすればいいでしょうか。
この文字列の場合、
ABCADEA
まで残したいのですが。。。(あるいはABCADEまで
0119nobodyさん02/11/29 22:40ID:???
>>118
s/(ABCADEA)FGAHI/$1/;
(w
0120nobodyさん02/11/29 23:00ID:JObUfqd/
/^([^A]*(?:A[^A]*){3})/ ? $1 : '';
012111702/11/29 23:06ID:JObUfqd/
hoge.plから&error;

とかすると、

sub error {
の中で、
error:line 333 in hoge.pl
とか出したいんですが。
&errorは、hoge.plからrequireします。
0122nobodyさん02/11/29 23:13ID:???
!user/local/bin/perl -C
とかで簡単にコンパイルできたらなぁ
0123nobodyさん02/11/29 23:13ID:???
&error(__LINE__);

sub error{
die "error: line $_[0] in $0";
}
0124nobodyさん02/11/29 23:55ID:???
>>121
KCatch.pmとかの併用をおすすめする。
0125nobodyさん02/11/30 00:52ID:???
googleのように、キーワードがあるとあるタグではさんで
テキスト内のどこにキーワードがあるか一見してわかるような
プログラムを作っているのですが、

jcode::convert(\$_, 'euc', "", "z");
jcode::convert(\$word, 'euc', "", "z");
$_ =~ s/$word/<XX>$word</XX>/; #(XXは任意のタグ)

とするとどうしてもうまく置き換えられずに化けてしまう
文字があります(主に全角のカナ)。
処理は入力をすべてEUCにコンバートしてから行っています。
化けてしまう原因が分かりません。
置き換え時の文字化けというのは避けられないのでしょうか?
0126nobodyさん02/11/30 00:55ID:???
文字コードの自動判別がうまくいってない?
0127nobodyさん02/11/30 00:58ID:???
>>125
情報すくなすぎ。
具体的に$_と$word それぞれがどういう入力のときにうまく
いかないのか。jcode::convertした時点で化けているのか、
置き換えたときに化けてしまうのか。
012812502/11/30 03:00ID:???
125です。お返事ありがとうございます。
jcode::でsjis→EUCコンバート時には
まだ化けていないようです。
さらにそのテキストをsjisに戻した場合は
化けてしまうものもあるようですが、今回は
sjisに戻しておりませんので無視しています。
現状としてはどうやら置き換えている時に
化けてしまっているようです。
どの文字がどのようなタイミングで化けるか調査して
もう一度書き込ませていただきます。
012912502/11/30 04:09ID:???
125です。
確認したところ、置き換え時に同一文字コードながら違う文字?
で置き換えが行われていて化けてしまっているようです。
例えば
$_ = "007シリーズの最新作「ダイ・アナザー・デイ」";
$word = "次';

としたときに以下のようになります

007シリーズの最新作「ダイ・アナザ。<XX>次</XX>Ε妊ぁ廚・

このように、"次"という文字は含まれていないのですが
文字コードが同一?のため中途半端な所で置き換えが
行われて以後の文章が化けてしまう、という現象に見えます。

このような動作を回避することは出来るのでしょうか?
0130nobodyさん02/11/30 05:16ID:???
>>121
Carp or caller
0131nobodyさん 02/11/30 05:39ID:???
>>129
そのperはeuc-jp対応版なの?

0132nobodyさん02/11/30 09:03ID:KwMUsAxf
素因数分解する物を作ったんですが、桁数の大きい物を入れると
うまくいきません。(例:40000000000とか) 何でですか?
$m = 2; $x = 0; $c = 0; ($nは元の数)

while ($h == 0){
if ($n % $m == 0){
$n = $n / $m;
@x[$x] = $m;
$x++;
}
else{
$m++;
if ($n % $m == 0){
$n = $n / $m;
@x[$x] = $m;
$x++;
}
}
if ($n < $m){$h = 1;}
}
0133nobodyさん02/11/30 09:36ID:???
>>132
素因数分解のアルゴリズムは置いておいて、
http://pc.2ch.net/test/read.cgi/php/1000191385/66-69
これか?
013413202/11/30 10:21ID:KwMUsAxf
>>133
よく分からないんですが、perlのバージョン?(仕様上?)に問題があるということですかね?
0135nobodyさん02/11/30 12:00ID:???
質問なのですが、
たとえば<txt></txt>で囲まれている間の文字のみを
s/</&lt;/g;
s/>/&gt;/g;

という風に変換したいのですが、
どうしたらいいか分かりません。下記の様にしたのですが、できませんでした。
ご教授して頂けませんか?

if ($val =~ /<txt>(.*?)<(.*[^>]*)>(.*?)<\/(.*?)>(.*?)<\/txt>/) {
$val =~ s/$1<$2>$3<\/$4>$5/ig;
}
#見にくくてスミマセン…
013613502/11/30 12:17ID:???
勘違いしてました・・・
上手くいきました、ご迷惑おかけしまスタ
0137nobodyさん02/11/30 13:59ID:/75slB4U
>>132
Math::Bigint 使ってください。
Perlで大きい整数はまともに扱えません。
使い方は perldoc Math::Bigint 読んでね。
0138nobodyさん02/11/30 14:04ID:???
>>129 =125
ttp://www.din.or.jp/~ohzaki/perl.htm
ここの「日本語を扱う 正しくパターンマッチさせる」を読んでくれ。
日本語処理はそう簡単には実装できない。
013912502/12/01 14:00ID:???
>>138
求めていた回答がここにありました。
じつはそこのサイトはこのスレッドの頭にあったので
見ていたのですが、ちゃんと読まずに通過していたようです。
解決することができました。ありがとうございました。

他の皆様も考えてくださったり回答してくださったりして
ありがとうございました。では。
0140nobodyさん02/12/01 21:52ID:???
my @hogelist = ('hoge','piyo','huga');
で作ったをもとに、
hoge,piyo,huga
と表示させたいです。どうやればいいか教えてください。
0141nobodyさん02/12/01 21:55ID:???
s/(で作った)(をもとに、)/$1配列$2/;
0142nobodyさん02/12/01 21:58ID:???
join
0143nobodyさん02/12/01 22:02ID:???
join(",",@hogelist)
0144nobodyさん02/12/01 22:03ID:???
>>142-143様。
ありがとうなのです(^-^)
0145nobodyさん02/12/01 22:06ID:???
>>140
{
my @hogelist = ('hoge','piyo','huga');
my $count =1;
foreach(split(/\t/,join('\t',@hogelist))){
print "," if $count%0x04;
chomp;
print STDOUT;
$count += ($count+1)/0x01;
}

もっと無駄な方法ってないかしらん・・・
0146nobodyさん02/12/01 22:07ID:???
>>145
遅せーんだよ
0147nobodyさん02/12/01 22:22ID:SByI0FEM
あの〜今度HP作ろうと思ってるんです。この機会にUPローダも作りたいんです。
誰かUPローダの作り方教えてください。
作り方を説明してるサイトでもいいんで、お願いします。
0148nobodyさん02/12/01 22:25ID:???
すみません、どなたか御教授ください
CGI::Liteとかのurl_encode,decodeなんですけども、
ある文字列がエンコード済みなのか未エンコードなのか調べる方法は無いでしょうか?
既にエンコード済みの"300%89%7e%82%c5%8d%a1%8c%8e%90%b6%82%ab%82%c4%82%a2%82%af%82%e9%82%a9%89%b4"
とか、未エンコードの"松屋のカレー(゚д゚)ウマー"とか色々な文字列が与えられてくるのですが
それを一律にURLエンコードがされた状態にしたいのです
で、ソレをデコードする時等、エンコードされてるモノはデコードしなきゃいけませんですし、
エンコードされてないモノに、"今日の降水確率は%25ってとこですかね"とか与えら、
デコードしたら変になってしまいますし…

なにかいい方法はないでしょうか?お知恵をお貸しください…
0149nobodyさん02/12/01 22:37ID:???
>>147
レンタルのにしなさい。
>>148
本文につっこみますが日本語がとても難しいです。
もう一度日本語の勉強をしなおしてきます。
($str =~ m#^%.*#)? デコード処理 ;
ではダメ?(やっぱりよくわからん)
0150nobodyさん02/12/01 22:38ID:???
>>148
理論的には不可能だ。
'%22'という文字列だけが来たときに、それがもともと
'%22' という文字列をそのまま送信したのか、
'"'(ダブルクォーテーション)を送信したのか、判別できないだろう。

[\x80-\xff]が含まれていたらエンコードされていないと見なす、くらいで
妥協したら?
0151nobodyさん02/12/02 04:38ID:weXpByrh
確かに、理論的には不可能だが

->decode($str) if $str =~ m/^(?:%[a-fA-F0-9][a-fA-F0-9])+$/;

で、十分実用に耐えると思うが・・・

エンタープライズとかだと、デコードしてないと
error 400になるけど
■ このスレッドは過去ログ倉庫に格納されています