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

【Perl】初心者コーナー Part12

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

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

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

CGIの質問は【CGIだけどなんか質問ある Pert 6 】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4 】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10を見よう。
 
031331002/05/04 00:12ID:???
>>312 さん
やっぱりjperl使うしかないのですかねぇ・・・。
0314nobodyさん02/05/04 00:16ID:???
>>310
>>3の[お薦め]に載ってるPerlメモってサイトを参考にしてみては?
0315nobodyさん02/05/04 00:16ID:???
>>311
んー。諒解しました。本家は ++ なわけね。
0316nobodyさん02/05/04 00:26ID:GNJILI/X
質問です。
ログファイルの$hoge[3]にそれぞれ数字がありまして
その数の合計を求めるにはどうすれば宜しいのでしょうか?
ログファイルは\tで区切ってあります。
031731002/05/04 00:26ID:???
>>314 さん
実はすでにあちらのメモも試したのですが、うまくいかなかったのです。
でも、実際のところはどこがうまくいっていないのか理解できていないので
うまく適用できていなかったのかもしれませんが・・・。
0318nobodyさん02/05/04 00:33ID:???
>>316
改善されてねーな

112 :nobodyさん :02/05/03 18:40 ID:???
>>110
「ログファイルの$hoge[3]」って何よ。
「ログファイルは\tで区切ってあります」ってのはレコード区切りが\nでデータ区切りが\tって事か?

わかるように書いてくれ。いや、大体わかっているんだけどな。
0319nobodyさん02/05/04 00:35ID:???
>>316
\tで区切ってるログファイルの4番目のとこに数字があるってこと?

$count=0;
open(FILE,"./$filename");
while(<FILE>){
@hoge=split(/\t/);
$count+=$hoge[3];
}
close(FILE);
print $count;
0320nobodyさん02/05/04 00:46ID:???
>>318
漏れもワラタ。
0321nobodyさん02/05/04 00:49ID:???
>>310
$_ = '文字コードがEUCの場合ね';
s/\x82[\x9F-\xF1]//g;
print;

これでひらがなだけ削れる
逆は自分で考えれ
0322nobodyさん02/05/04 00:49ID:???
>>317
$hoge ="123あいうえ456さしすせ-*/アイウabcdエオ";

$Zhiragana = '(?:\xA4[\xA1-\xF3])';
$hoge =~ s/$Zhiragana//g;

EUCこれでできるよ。
実行したら print $hoge; で表示されるのは
123456-*/愛上尾アウabcdエオ

あなたはどう書いてるの?EUCにコンバートするところとかは?
0323nobodyさん02/05/04 00:53ID:/IfudcOZ
他のサーバーにある画像ファイルのファイルサイズを取得するにはどうすれば良いでしょうか?
0324nobodyさん02/05/04 00:54ID:???
上のShift_JISだった
EUCはこうか
s/\xA4[\xA1-\xF3]//g;
0325321,32402/05/04 00:56ID:???
>>322が書いてるし 逝ってこよ…
032631002/05/04 00:56ID:???
>>321 ( >>324 ) さん
ありがとうございます!うまく動きました。
trを使っていたのが間違いだったのでしょうか??
兎にも角にも、ありがとうございました。
0327nobodyさん02/05/04 00:56ID:???
>323
LWPを使う。
0328nobodyさん02/05/04 00:57ID:???
(´-`).。oO(今日は妙に活気があるね…)
0329nobodyさん02/05/04 00:58ID:???
>>322
実行されて表示されるの違った結果かいちゃいました。ごめん
0330nobodyさん02/05/04 00:59ID:???
>>328
全部自作自演です。
033131002/05/04 00:59ID:???
>>322 さん
お答えありがとうございます。そちらも試したのですが
SCALAR(0xc963c4)
のエラーがでてしまいます・・・。なぜでしょう?
0332_gunzip02/05/04 01:00ID:???
質問するほうも、答えるほうも、はっきり言わせてもらうが
レベルが低いよ。
033331002/05/04 01:02ID:???
>>322 さん
とりあえず、入力される文字列は全て
jcode::convert(\$hoge, 'euc');
にてeucにコンバートしております。
で、とりあえずいまはWin2000上のコマンドプロンプトで動かしているので
出力前にsjisにして出力しています。
0334nobodyさん02/05/04 01:04ID:/IfudcOZ
>>327
LWPですか・・
ちょっと調べてきます・・・
0335nobodyさん02/05/04 01:05ID:???
>>332
(´-`).。oO(はっきり言わせてもらうがレベル高かったら質問しないよ…)
033631002/05/04 01:06ID:???
>>322 さん
何度もレスすみません。動きました。こちらの記述ミスでした。
ただ、「イ」が消えてしまうのはやはりコード上の問題でしょうか?
0337nobodyさん02/05/04 01:07ID:???
(´-`).。oO(>>332 は放置で…はいはい、次の方〜)
0338nobodyさん02/05/04 01:08ID:???
★★★ 質問者はコードを晒せ ★★★
0339nobodyさん02/05/04 01:09ID:???
>>332
騙りウザイ
0340nobodyさん02/05/04 01:10ID:???
if ( $situmonsha{'sex'} == $female ) {
 print "写真うpしる!話はそれからだ!\n";
}
else {
 print "逝ってヨシ!\n";
}
0341nobodyさん02/05/04 01:11ID:???
(´-`).。oO(_gunzipは共有コテハンじゃないのにねぇ・・・はい、次の方〜)
034231602/05/04 01:15ID:GNJILI/X
>>319
エラーになっちゃいました。
$count+って使えます?
0343さゆ ◆ugYa5.J6 02/05/04 01:20ID:???
>>342
うちではエラーでないぞ。
コピペミスじゃない?
0344nobodyさん02/05/04 01:35ID:???
>>342
+ と += の違い分かりますか?
0345_gunzip02/05/04 01:37ID:???
レベルが低いと言ったのは、1 に書いたことを無視した質問のしかたや
過去レスで何度も答えている内容をいまだに質問してくるということで、
そのために答えるほうもまとを得ない答えになってしまっているということ。
034634202/05/04 01:38ID:???
>>344
わかりませんです。
0347nobodyさん02/05/04 01:43ID:???
>>346
perlの本を読み直しましょう。
本もってないなら、買ってね。
0348nobodyさん02/05/04 01:50ID:???
>345 =~ s/_gunzip/_gnuzip/
暇な奴だな(w
0349pear@空気固定 ◆FRUIT8pk 02/05/04 01:52ID:???
>>344
$x += 50; # $xに50を足す
$x = $x + 50; # $xに50を足す
0350nobodyさん02/05/04 01:56ID:???
>>348
漫画でよくあるネタだよね(w
↓ここに投稿したくなった。
バカの一つ覚えな展開2
http://comic.2ch.net/test/read.cgi/comic/1019059437/
0351nobodyさん02/05/04 01:58ID:???
↑何が言いたいのかわからん。
0352nobodyさん02/05/04 02:00ID:???
どうでもいいネタでいつまで盛り上がってるんだ。
0353nobodyさん02/05/04 02:08ID:???
LWPって何?
0354nobodyさん02/05/04 02:11ID:???
>>353
http://www.google.com/search?hl=ja&q=lwp%82%C1%82%C4%82%C8%82%C9%81H&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
035535202/05/04 02:13ID:???
>>350 よくわからん。
>>353 LibWww-Perl の略じゃないの?
http://www.linpro.no/lwp/
Perl関連でなけりゃLight Weight Processの略かもしれないがな。
0356nobodyさん02/05/04 02:47ID:???
>>327
他の方法はないですか?
0357nobodyさん02/05/04 02:54ID:???
なぜlwpでは駄目だと判断したのかを書いたら?
0358ん〜さっぱわからん02/05/04 04:11ID:qVSStWkL
とある、ファイルがある。
んで、そのファイルには20行のテキストデータがあって
その1行の文字数はマチマチである。

さて、このファイルの5行目から10行目までのデータを
読み込みたい。

でも、ファイル全部を読み込んで後から整形するのはいやだ。
どうすればいいのだろうかぁ?
0359nobodyさん02/05/04 04:13ID:???
>>356
あとは、wgetやWWWcp等の外部コマンドを呼ぶしか、簡単な方法は
無いと思う。
めんどくさい方法でもいんなら、Socket使ってうりうりやる方法もある。
0360nobodyさん02/05/04 04:15ID:???
>>358
foreach(1..5) {
 <IN>;
}
foreach(1..5) {
 push(@data,<IN>);
}
でどうかね。
0361nobodyさん02/05/04 04:19ID:Wv66U69I
FreeBSDのWebサーバ上に、簡単なテストのPerlCGIを設置しよう
としているのですが、ブラウザから呼び出すと何故か動きません。
「500 Internal Server Error」とエラーメッセージが出てしまいます。
文字コードも置き場所もパーミッションも.htaccessも問題無いと思うし、
TELNETで単体実行してもちゃんと動きます。
エラーログを見ると、「Premature end of script headers」となっています。
・・・スクリプトヘッダーの時期尚早の終わり?とな?ん?
他の人が作っていたCGIを見てみても、とりあえず一行目の
「#!/usr/local/bin/perl」というのは一致しているし・・・

皆さん、どうぞ知恵をお貸し下さい。
0362ん〜さっぱわからん02/05/04 04:25ID:qVSStWkL
>>360
そんなに簡単にできちゃうの?もうずいぶんと長い間悩んでいるのだが
でも、それって結局ファイル全部読み込んでるのと同じじゃないのだろうか?
0363nobodyさん02/05/04 04:28ID:???
>>361
改行コードがDOS改行になってるっていうオチはないか。
とりあえず、telnet経由で単独で実行した結果の先頭5行くらいコピペ
してちょ。
036436502/05/04 04:29ID:???
>>362
んなこたーない。
1〜5行目までは読んで捨ててるのでメモリに残らないし、
11行目以降は、読んでさえいない。
0365なんとなくわかってきた02/05/04 04:38ID:qVSStWkL
>>364
んん、なんとなくわかってきますた。すいませぬ。

つまりは2ch掲示板の
最新50 1-100 100-200 200-300
っつーのをやりたいのですが、やはりこの方法でやっているのでしょうか?
036636102/05/04 04:39ID:Wv66U69I
>>363
秀丸を使って、EUCからS-JIS、JIS、UNICODEにUTF-8まで試してみました。
以下は単独実行の結果です。
dalrq000@sv29:~/public_html/acjik/abcd/cgilib>./jiktes.cgi
Content-type: text/html

<html>
<body bgcolor=silver text=navy>
<h1>CGI TEST</h1>
length:<p>
IP Addres:<p>
data:<p>
(以下略)
・・・どんなでしょうか?
0367nobodyさん02/05/04 04:44ID:???
>>366
っかしいなぁ。
出力はそれでOK。
ためしに、
#!/usr/local/bin/perl
print "Content-Type: text/html\n\nほげほげ";
だけ書いたスクリプトだとどうなるかな。これでだめなら、
webサーバの設定(httpd.confか.htaccess)がおかしいと思う。
0368nobodyさん02/05/04 04:46ID:???
>>365
read.cgiはperlじゃなくてCでしょ。
やってることは同じだと思うけど。
0369わかりましたぁ!02/05/04 04:50ID:qVSStWkL
>>368
ですよね。なんとか理解してきました。
早速試してみます。ありがとうございます。

・・・しかし、随分長い間Perl書いてるのになんで
教える側にまわれないんだろう?(ショボン
037036102/05/04 04:58ID:Wv66U69I
>>367
.htaccessは以下の二行だけです。
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .cgi/

他の人が作成してちゃんと動いているCGIのディレクトリ内には、
.htaccessはありません。当然削除して試してみましたが駄目でした。
更に、その人のディレクトリに私のCGIを置いて試してもみました。

httpd.confの方は見る事も禁止されてるので、なんとも言えません。
0371nobodyさん02/05/04 05:05ID:???
>>370
で、その人のを自分とこ置いたらできたの?
>>367の2行だけのスクリプトはどう?
037236102/05/04 05:37ID:Wv66U69I
>>371
それが・・・それらのファイル、エラく大掛かりなんで、ドコを
どうイジったらいいか分析するのに凄く時間が掛りそうなんです。
とりあえず移動させずに、ブラウザからアクセスするとForbiddenと
言ってきます。これは、一応CGIの実行結果みたいです。
関連するらしいファイルをまとめて(怪しいですが)私のトコにコピーし、
ブラウザから呼び出してみると・・・500 Internal Server Errorになります。

あ、「ほげほげ」もやっぱり駄目みたいです。
0373nobodyさん02/05/04 05:39ID:???
>370
オマエには無理じゃないのか?
FreeBSDのWebサーバ上にCGIスクリプトをアップしてるわけだろ。
秀丸で文字コード変換を試したっつーことはWinからアップしてるだろ。
アップはFTPだと思うが、結局アップするときにバイナリモードでやったのか?
オマエのことだから自動変換かアスキーモードでやっていないか?
あとは、パーミッションは大丈夫だと言ってるが、上位ディレクトリのパーミッション
まで確認できてるのか?
それと、371 が書いてることも合わせて確認しろ。
0374nobodyさん02/05/04 05:40ID:fEiPwaMd
すんません誰か力かしてください。
LWPで取得したデータを$xに入れる。
その$xをwhileで処理させる超シンプルなソースお願いです。
0375nobodyさん02/05/04 05:45ID:???
foreachを使った制御構造とwhileを使った制御構造がありますが
foreachでも(1..5)とか指定すればwhileで5回繰り返しやったのと
結果以外の部分でも同じ位の負荷だとかになるんでしょうかね?

後、どっかのスレで書けるなら全部whileの方がいいと聞きましたが
全部読む必要があるときなんかもwhileで書いた方が良いんですかね?
037636102/05/04 05:56ID:Wv66U69I
>>373
ん?確かにWinからですが、CGIの類ってASCIIで
転送するんじゃなかったんですか?
パーミッションはpublic_html以下から、とりあえず777にしてみてます。
037736102/05/04 06:09ID:Wv66U69I
>>373
CGIの類っちゅうか、スクリプト言語の類ですね。
037837102/05/04 06:09ID:???
>>376
ASCIIでやったほうが、改行コード変換してくれるので楽だけど、
できればあらかじめUNIX改行(LF)にしておいて、バイナリモードで
転送したほうが確実。
(>>363で改行コードの指摘したのはそれなんだけど)

んで、Forbiddenってのは、CGIの実行結果じゃく、サーバが返してる
エラーだと思うんだけど、それはおいといて、

まずは>>367の2行スクリプト試してよ。
不安なので、public_html/ 直下に置いて、.htaccess アリの場合と
無しの場合と、telnet で直接実行した場合の3通りの結果よろしく。
037936102/05/04 06:42ID:Wv66U69I
>>378
EUCにしておいてバイナリモード転送。・・・同じですね。
でも、363の内容で問題が起こってたとしたら、
単独実行も出来なかったのでは?

その人は403.htmlってファイルを自分で用意してて、
それを表示させてるみたいです。

試しましたよ。「ほげほげ」って、その2行スクリプトの事です。
先程改めて、EUCにしておいてバイナリ転送して試しましたが、駄目みたいです。
public_html直下に置く件、.htaccessの件、直接実行の件、
試しましたがどれも駄目みたいです。
038037102/05/04 06:51ID:???
>>379
EUCは文字コードで、改行コードとはぜーんぜん関係ないんだけど、
それはまぁいいや。

とりあえず、例の2行スクリプトがだめなら、君のせいじゃなくて、
サーバの設定の問題しか考えられないので、管理してる人に
相談しよう。
0381nobodyさん02/05/04 06:57ID:???
AddHandler cgi-script .cgiは?
038236102/05/04 07:24ID:Wv66U69I
>>380
へー、今までそれらはセットになってるんだと思っでもてました。メモメモ。
でも、373の彼もその辺まで考えてたとは思えないなー?

もう5日前からサポートにメールしてるんですが、リアクションが無いんです。
GWをフルに休んでるのか、誰もメールをチェックしてないのか・・・
太陽が眩しい。とりあえずもう寝ます。お付き合いありがとうございました。

>>381
ん?・・・それ、今.htaccessに追加してやってみました。駄目です。
0383nobodyさん02/05/04 07:35ID:???
う〜ん、つ〜かさ
結局今まで出ているエラーは

Premature end of script headers

これなんでしょ?だとしたら、cgi は動いているんだよ
で、俺が見て気になった部分なんだけど

#!/usr/local/bin/perl
print "Content-Type: text/html\n\nほげほげ";

↑これを

#!/usr/local/bin/perl
print "Content-Type: text/html\r\n\r\nほげほげ";

↑こうやっても駄目カナ?
以前、一度これではまった覚えあるから…
0384nobodyさん02/05/04 07:38ID:???
どうせperlのパス間違ってるとかScriptAliasが設定してあるとかだろ。
038538302/05/04 07:43ID:???
もし、↑で動くんだったら、conf/mime.types がオカシイという落ちになる
0386nobodyさん02/05/04 07:45ID:???
>>384
(゚Д゚)ハァ?

何言っているの君?

>>361
> エラーログを見ると、「Premature end of script headers」となっています。
> ・・・スクリプトヘッダーの時期尚早の終わり?とな?ん?
> 他の人が作っていたCGIを見てみても、とりあえず一行目の
> 「#!/usr/local/bin/perl」というのは一致しているし・・・

日本語読めますかぁ?
0387nobodyさん02/05/04 07:46ID:???
>>382
フリー鯖ならちょっと試してみたいのでどこなの教えてほしいんだけど、
telnet使えるってことはフリーじゃないか。
0388nobodyさん02/05/04 07:53ID:???
Premature end of script headers
ってスクリプトが実行できていないときにも出るよ。
0389nobodyさん02/05/04 07:55ID:???
>>383 例えば?
0390nobodyさん02/05/04 07:55ID:???
>>383
#!/usr/local/bin/perl
の行が間違ってても、Premature end of script headers になるよん。

なので、改行がDOS改行(CR+LF)になってると、
「/usr/local/bin/perl^M」ってファイルを実行しようとして、上記のエラーになる。

ただしその場合、コマンドラインから実行しようとすると、コマンドが
見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。
0391nobodyさん02/05/04 08:05ID:???
>>389
鬱。間違えた

>>388 が正しい。ゴメソ

>>398
> ただしその場合、コマンドラインから実行しようとすると、コマンドが
> 見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。

だから、cgi は動いていると判断するのが妥当だろ。なんで、.htaccess に
話をもって行くのが疑問…
0392nobodyさん02/05/04 08:06ID:???
設定がうまくいってなくても
Premature end of script headers でるよん。
0393nobodyさん02/05/04 08:13ID:???
Premature end of script headers でるでる言われても例示してくれないと説得力無いな。。。
0394nobodyさん02/05/04 08:26ID:???
Premature end of script headers は suExec失敗したり、
いろいろなケースが考えられるんじゃないかな?
質問者の利用している環境がよくわからないので、何とも言えませんが。
Perlスクリプトとしては実行できているのに、CGIでは動作していない
ようなので、あらゆる可能性を考えてみるのも悪くないと思うよ。
まぁ、こういう時は、単純なケアレスミスだったりするかもしれないけど。
0395nobodyさん02/05/04 13:02ID:KUHaKz9T
#! c:/perl/bin/perl

open(FILE,"./log.txt");
@data=<FILE>;
close(FILE);

$num=1;
$i=0;

print "Content-type: text/plain\n\n";
while(($data[$i] ne '') or $num<8){
($name,$message)=split(/\t/,$data[$i]);
print "名前$num:$name\n";
print "メッセージ$num:$massage\n";
$i++;
$num++;
}

logファイルを読み込んでそれをただブラウザに表示させるプログラムです。
logファイルから読み込んだデータが8行以上の場合は7行まで表示させて、7行に満たない場合は
そこで表示を終了させたいのですが、データが7行未満しかないときでもwhile文を抜け出してくれません。
配列にデータが入ってない場合はどのように条件にしたら良いのでしょう。
0396nobodyさん02/05/04 13:25ID:???
>>395
or ぢゃだめじゃん・・・
039739502/05/04 13:36ID:???
>>396
どうもです。andで成功しました。
恥ずかしいミスだぁ・・・

0398nobodyさん02/05/04 14:54ID:???
KENTさんの掲示板でトリップを使おうとして
17氏のbbs.cgiからトリップの部分だけコピペしましたが動作しませんでした・・・。
どうすればトリップが使えるようになりますか?
0399nobodyさん02/05/04 15:06ID:???
>398
名前欄に「#〜〜」と入れる。

というネタレスはさておき。
$name = $in{'name'};
$name =~ s/◆/◇/g;
if($name =~ s/#(.+)$//g){
$key = $1;
$salt = substr(substr($key, 1, 2) . "H.", 0, 2);
$salt =~ tr/:;<=>?\@[\\]^_`/ABCDEFGabcdef/;
$salt =~ s/[^\.\/0-9A-Za-z]/\./g;
$trip = substr(crypt($key, $salt), -8);
$name .= "◆$trip";
}

漏れはこうやって使ってる。
0400さらなる謎02/05/04 15:50ID:qVSStWkL
>>358なんだけど・・・

>>360さま

下のようなテストのスクリプトを書いて試してみたんだけど
#(ok)の方では正しい答えがえられるのに
コメントアウトしてある#(ng)では11行目以下のデータも
@LOGに読み込んでしまうのですます、はい。
なんでだろ?同じ筈なのに・・・・謎。

#!/usr/local/bin/perl
#==========================================
open(IN,"test.dat");

foreach(1..5) { <IN>; }
foreach(1..5) { push(@LOG,"".<IN>); } #(ok)
#foreach(1..5) { push(@LOG,<IN>); } #(ng)
close(IN);

#==========================================
print "Content-type: text/html\n\n";
print "<HTML>\n";

foreach $data(@LOG){
print "$data<BR>\n";
}

print "</HTML>\n";

exit;

サーバーはfreeBSDのアパッチ。
0401nobodyさん02/05/04 16:24ID:638lh9Jm
ユーザ管理用のプログラムを作っています。
そのデータ管理ファイル内にパスワードを
平文のままで保存しておくとセキュリティー上問題が
在ると思います。
しかし、ユーザIDとメールアドレスをユーザが入力すると
その2つと一致したデータのパスワードを
相手にメールで通知したいと思います。

そこで、そのようなプログラムはどのように組めばいいのでしょうか?
暗号・復号可能なパスワードのロジックなど存在するのでしょうか?
アドバイスをお願いします。
0402nobodyさん02/05/04 16:29ID:???
ごめん。そろそろ>>283教えてください。
0403ん〜02/05/04 16:30ID:qVSStWkL
>>401
ん〜、crypt。。。じゃダメなの?
0404nobodyさん02/05/04 16:33ID:???
>283=>402
あまりに基本過ぎてネタとしか思えないんだが。
第一引数の配列の末尾に第二引数を要素として加える。
第二引数はダブルクォーテーションとして囲まれてるから文字列として加えられる。

頼むから初歩の初歩的なことくらい自分で勉強してくれ。
0405nobodyさん02/05/04 16:39ID:638lh9Jm
>>403
cryptだと、ユーザが入れたパスワードが
在っているかどうかのチェックはできると思うのですが、
パスワードを忘れたユーザに対して登録しているメールアドレスに
通知するとき、もとのパスワードはわからないですよね?

かといって、平文で保存しておくと、セキュリティー上やばいでしょうから。
皆さんのお知恵をお借りしたいのです。
0406nobodyさん02/05/04 16:56ID:???
>>405
xorでも取れば?
8文字なら64bit通りの可能性がある暗号化となる。
0407nobodyさん02/05/04 17:00ID:???
>>404ありがとう。${name} ${value}こいつらがわからんかったんです。
$_みたいなものですか?
while (($name, $value) = each %cookie) {
$name =~ s/([$encode])/'%'.unpack("H2", $1)/eg;
$value =~ s/([$encode])/'%'.unpack("H2", $1)/eg;
$name =~ s/\s/\+/g;
$value =~ s/\s/\+/g;
push(@sqcookie, "${name}_${value}");
}
0408nobodyさん02/05/04 17:05ID:???
>407
$sqcookie[@sqcookie] = "${name}_${value}";

こういう書き方をすればわかるかな?
強引なやり方だが意味は同じ。

${name}は$nameと同じ。
何でそういう事をしているかというと、$name_$valueだと、
「$name_」と「$value」を足す事になって、「$name」と「_」と「$value」を足す
という意味にはならないから。
変数にどの文字が使えるか考えればわかる事。

${name}という表記の仕方は覚えておくといいよ。
変数名に変数を使いたい時とかに役立つ。
質問の意図を一部誤解していたみたいですまない。
0409nobodyさん02/05/04 17:34ID:???
>405
複合化できたら平文で保存するのとあまりセキュリティ上の危険さは変わらないと思うけど。
(自分で複雑なのを組むとか言うなら別だけど。)
それなら、確認のメール入れてそこからアクセスして変更ってのが一番楽かと。
041036002/05/04 17:39ID:???
>>400
スマソ。そうなるね。
#(ok)のようにしてちょ。
もしくは、明示的に、
push(@data,scalar(<IN>));
と。
0411nobodyさん02/05/04 17:40ID:???
>>405
メールアドレスをキーとして、暗号化しよう。
そしたら、メールアドレスが分かる場合だけ元に戻せる。
0412nobodyさん02/05/04 17:47ID:???
クッキーの読み込みで、
a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
こんな感じで保存されているクッキーがあって、
$COOKIE{a}と書くと
aaaaのみ表示されて、
aaaa
aaa
aa
と表示されません。
どうすればいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています