【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を見よう。
0362ん〜さっぱわからん
02/05/04 04:25ID:qVSStWkLそんなに簡単にできちゃうの?もうずいぶんと長い間悩んでいるのだが
でも、それって結局ファイル全部読み込んでるのと同じじゃないのだろうか?
0363nobodyさん
02/05/04 04:28ID:???改行コードがDOS改行になってるっていうオチはないか。
とりあえず、telnet経由で単独で実行した結果の先頭5行くらいコピペ
してちょ。
0365なんとなくわかってきた
02/05/04 04:38ID:qVSStWkLんん、なんとなくわかってきますた。すいませぬ。
つまりは2ch掲示板の
最新50 1-100 100-200 200-300
っつーのをやりたいのですが、やはりこの方法でやっているのでしょうか?
0366361
02/05/04 04:39ID:Wv66U69I秀丸を使って、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:???っかしいなぁ。
出力はそれでOK。
ためしに、
#!/usr/local/bin/perl
print "Content-Type: text/html\n\nほげほげ";
だけ書いたスクリプトだとどうなるかな。これでだめなら、
webサーバの設定(httpd.confか.htaccess)がおかしいと思う。
0369わかりましたぁ!
02/05/04 04:50ID:qVSStWkLですよね。なんとか理解してきました。
早速試してみます。ありがとうございます。
・・・しかし、随分長い間Perl書いてるのになんで
教える側にまわれないんだろう?(ショボン
0370361
02/05/04 04:58ID:Wv66U69I.htaccessは以下の二行だけです。
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .cgi/
他の人が作成してちゃんと動いているCGIのディレクトリ内には、
.htaccessはありません。当然削除して試してみましたが駄目でした。
更に、その人のディレクトリに私のCGIを置いて試してもみました。
httpd.confの方は見る事も禁止されてるので、なんとも言えません。
0372361
02/05/04 05:37ID:Wv66U69Iそれが・・・それらのファイル、エラく大掛かりなんで、ドコを
どうイジったらいいか分析するのに凄く時間が掛りそうなんです。
とりあえず移動させずに、ブラウザからアクセスするとForbiddenと
言ってきます。これは、一応CGIの実行結果みたいです。
関連するらしいファイルをまとめて(怪しいですが)私のトコにコピーし、
ブラウザから呼び出してみると・・・500 Internal Server Errorになります。
あ、「ほげほげ」もやっぱり駄目みたいです。
0373nobodyさん
02/05/04 05:39ID:???オマエには無理じゃないのか?
FreeBSDのWebサーバ上にCGIスクリプトをアップしてるわけだろ。
秀丸で文字コード変換を試したっつーことはWinからアップしてるだろ。
アップはFTPだと思うが、結局アップするときにバイナリモードでやったのか?
オマエのことだから自動変換かアスキーモードでやっていないか?
あとは、パーミッションは大丈夫だと言ってるが、上位ディレクトリのパーミッション
まで確認できてるのか?
それと、371 が書いてることも合わせて確認しろ。
0374nobodyさん
02/05/04 05:40ID:fEiPwaMdLWPで取得したデータを$xに入れる。
その$xをwhileで処理させる超シンプルなソースお願いです。
0375nobodyさん
02/05/04 05:45ID:???foreachでも(1..5)とか指定すればwhileで5回繰り返しやったのと
結果以外の部分でも同じ位の負荷だとかになるんでしょうかね?
後、どっかのスレで書けるなら全部whileの方がいいと聞きましたが
全部読む必要があるときなんかもwhileで書いた方が良いんですかね?
0376361
02/05/04 05:56ID:Wv66U69Iん?確かにWinからですが、CGIの類ってASCIIで
転送するんじゃなかったんですか?
パーミッションはpublic_html以下から、とりあえず777にしてみてます。
0377361
02/05/04 06:09ID:Wv66U69ICGIの類っちゅうか、スクリプト言語の類ですね。
0378371
02/05/04 06:09ID:???ASCIIでやったほうが、改行コード変換してくれるので楽だけど、
できればあらかじめUNIX改行(LF)にしておいて、バイナリモードで
転送したほうが確実。
(>>363で改行コードの指摘したのはそれなんだけど)
んで、Forbiddenってのは、CGIの実行結果じゃく、サーバが返してる
エラーだと思うんだけど、それはおいといて、
まずは>>367の2行スクリプト試してよ。
不安なので、public_html/ 直下に置いて、.htaccess アリの場合と
無しの場合と、telnet で直接実行した場合の3通りの結果よろしく。
0379361
02/05/04 06:42ID:Wv66U69IEUCにしておいてバイナリモード転送。・・・同じですね。
でも、363の内容で問題が起こってたとしたら、
単独実行も出来なかったのでは?
その人は403.htmlってファイルを自分で用意してて、
それを表示させてるみたいです。
試しましたよ。「ほげほげ」って、その2行スクリプトの事です。
先程改めて、EUCにしておいてバイナリ転送して試しましたが、駄目みたいです。
public_html直下に置く件、.htaccessの件、直接実行の件、
試しましたがどれも駄目みたいです。
0380371
02/05/04 06:51ID:???EUCは文字コードで、改行コードとはぜーんぜん関係ないんだけど、
それはまぁいいや。
とりあえず、例の2行スクリプトがだめなら、君のせいじゃなくて、
サーバの設定の問題しか考えられないので、管理してる人に
相談しよう。
0381nobodyさん
02/05/04 06:57ID:???0382361
02/05/04 07:24ID:Wv66U69Iへー、今までそれらはセットになってるんだと思っでもてました。メモメモ。
でも、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:???0385383
02/05/04 07:43ID:???0386nobodyさん
02/05/04 07:45ID:???(゚Д゚)ハァ?
何言っているの君?
>>361
> エラーログを見ると、「Premature end of script headers」となっています。
> ・・・スクリプトヘッダーの時期尚早の終わり?とな?ん?
> 他の人が作っていたCGIを見てみても、とりあえず一行目の
> 「#!/usr/local/bin/perl」というのは一致しているし・・・
日本語読めますかぁ?
0388nobodyさん
02/05/04 07:53ID:???ってスクリプトが実行できていないときにも出るよ。
0390nobodyさん
02/05/04 07:55ID:???#!/usr/local/bin/perl
の行が間違ってても、Premature end of script headers になるよん。
なので、改行がDOS改行(CR+LF)になってると、
「/usr/local/bin/perl^M」ってファイルを実行しようとして、上記のエラーになる。
ただしその場合、コマンドラインから実行しようとすると、コマンドが
見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。
0391nobodyさん
02/05/04 08:05ID:???鬱。間違えた
>>388 が正しい。ゴメソ
>>398
> ただしその場合、コマンドラインから実行しようとすると、コマンドが
> 見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。
だから、cgi は動いていると判断するのが妥当だろ。なんで、.htaccess に
話をもって行くのが疑問…
0392nobodyさん
02/05/04 08:06ID:???Premature end of script headers でるよん。
0393nobodyさん
02/05/04 08:13ID:???0394nobodyさん
02/05/04 08:26ID:???いろいろなケースが考えられるんじゃないかな?
質問者の利用している環境がよくわからないので、何とも言えませんが。
Perlスクリプトとしては実行できているのに、CGIでは動作していない
ようなので、あらゆる可能性を考えてみるのも悪くないと思うよ。
まぁ、こういう時は、単純なケアレスミスだったりするかもしれないけど。
0395nobodyさん
02/05/04 13:02ID:KUHaKz9Topen(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文を抜け出してくれません。
配列にデータが入ってない場合はどのように条件にしたら良いのでしょう。
0398nobodyさん
02/05/04 14:54ID:???17氏のbbs.cgiからトリップの部分だけコピペしましたが動作しませんでした・・・。
どうすればトリップが使えるようになりますか?
0399nobodyさん
02/05/04 15:06ID:???名前欄に「#〜〜」と入れる。
というネタレスはさておき。
$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>>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つと一致したデータのパスワードを
相手にメールで通知したいと思います。
そこで、そのようなプログラムはどのように組めばいいのでしょうか?
暗号・復号可能なパスワードのロジックなど存在するのでしょうか?
アドバイスをお願いします。
0403ん〜
02/05/04 16:30ID:qVSStWkLん〜、crypt。。。じゃダメなの?
0404nobodyさん
02/05/04 16:33ID:???あまりに基本過ぎてネタとしか思えないんだが。
第一引数の配列の末尾に第二引数を要素として加える。
第二引数はダブルクォーテーションとして囲まれてるから文字列として加えられる。
頼むから初歩の初歩的なことくらい自分で勉強してくれ。
0405nobodyさん
02/05/04 16:39ID:638lh9Jmcryptだと、ユーザが入れたパスワードが
在っているかどうかのチェックはできると思うのですが、
パスワードを忘れたユーザに対して登録しているメールアドレスに
通知するとき、もとのパスワードはわからないですよね?
かといって、平文で保存しておくと、セキュリティー上やばいでしょうから。
皆さんのお知恵をお借りしたいのです。
0407nobodyさん
02/05/04 17:00ID:???$_みたいなものですか?
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:???$sqcookie[@sqcookie] = "${name}_${value}";
こういう書き方をすればわかるかな?
強引なやり方だが意味は同じ。
${name}は$nameと同じ。
何でそういう事をしているかというと、$name_$valueだと、
「$name_」と「$value」を足す事になって、「$name」と「_」と「$value」を足す
という意味にはならないから。
変数にどの文字が使えるか考えればわかる事。
${name}という表記の仕方は覚えておくといいよ。
変数名に変数を使いたい時とかに役立つ。
質問の意図を一部誤解していたみたいですまない。
0409nobodyさん
02/05/04 17:34ID:???複合化できたら平文で保存するのとあまりセキュリティ上の危険さは変わらないと思うけど。
(自分で複雑なのを組むとか言うなら別だけど。)
それなら、確認のメール入れてそこからアクセスして変更ってのが一番楽かと。
0412nobodyさん
02/05/04 17:47ID:???a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
こんな感じで保存されているクッキーがあって、
$COOKIE{a}と書くと
aaaaのみ表示されて、
aaaa
aaa
aa
と表示されません。
どうすればいいのでしょうか?
0416412
02/05/04 18:10ID:???a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
このように書かれています。
*で区切られています。
a1
a:aaaa
*
これで一つです。
0417415
02/05/04 18:13ID:???ファイル??クッキーじゃないの?
まぁいいや。で、
a1
a:aaaa
の a1 ってなに?コメント?
a:aaaa の a と aaaa って何? a が キーで、aaaa が値?
0419415
02/05/04 18:31ID:???こんなんでいんかな・・・
open(IN,"cookie.txt") || die;
while(<IN>) {
chop($_ = <IN>);
$COOKIE{$1} .= ($COOKIE{$1} ? "\n" : undef) . $2 if /(.+?):(.+)/;
<IN>;
}
close(IN);
0421nobodyさん
02/05/04 18:52ID:???つーと、>>416 は、なんかの変数に入ってるの?
改行されてるのは何故?
つーか、>>416の文字列は、どっからコピペしたの?なんかの出力?
0423421
02/05/04 19:01ID:???うん。掲示板作る時に使ったよ。
で、オレが知ってるcookieは、$ENV{'HTTP_COOKIE'};に渡されるんだけど、
>>422のクッキーっていったいなんなの?
0424412
02/05/04 19:12ID:???すみません。ウタガテマシター。
($dummy,$biscuit)=split(/=/,$ENV{'HTTP_COOKIE'});
@cookie=split(/,/,$biscuit);
foreach (@cookie){
($cookname,$cookvalue)=split(/:/,$_);
$cookname=~s/ //;
$COOKIE{$cookname}=$cookvalue;
}
取得の方法は↑です。
僕が利用したいクッキーはチェックを入れた項目のみをクッキーに保存しています。
バナナにチェックを入れるとバナナ:はい
となります。
で次にジュースにチェックを入れるとすると
バナナ:はい
ジュース:はい
とならずに
そのままクッキーに上書きされて
ジュースのみはいとなってしまいます。
これを
バナナ:はい
ジュース:はいとバナナの下に追加で書き込めるようにしたいです。
先程のやり方もありますが、メンドクサソウデスノデこの方法解りますか?
0425nobodyさん
02/05/04 19:23ID:???うっかりソースを晒したからCGIスレの黄金厨118だって事がバレちまったな(w
で、この問題については他のスレできちんとした答えをもらっているだろ?
キーが全てaだったらそりゃ上書きされる。キーを変えれ。ハッシュを学べ。
0426412
02/05/04 19:25ID:???読み込むとhoge@***となります。
そのhoge@***を消してまた情報を送信するとクッキーには
2度目に記入したメールアドレスがクッキーのメールの部分に上書きで保存されるとします。
そこを、
メール:hoge@***
メール:2度目に入力したもの
このようにクッキーに保存して、
1度目に記入したメール
hoge@***読み込んで
2度目に記入したメール
2度目に入力したもの
と読み込みたいです。
0427412
02/05/04 19:28ID:???あれは偽者です。
信じるか信じないかはあなたの自由ですけど、、、。
0428nobodyさん
02/05/04 19:36ID:???$cookie{'mail1'}にまず最初のクッキーを保存。
2度目では$cookie{'mail1'}を$cookie{'mail2}にコピーしてから、$cookie{'mail1'}を上書き。
同じキーでは無理だから、別のキーを考える。
0429nobodyさん
02/05/04 19:39ID:???#!/usr/local/bin/perl
"Set-Cookie: a=aaaa\r\n",
"Set-Cookie: a=aa\r\n",
"Set-Cookie: a=aaa\r\n",
"Set-Cookie: a=a\r\n",
"Content-type: text/html\r\n\r\n",
$ENV{'HTTP_COOKIE'};
適当な名前(cookie.cgiとか)を付けて保存して実行してみれ。
やろうとしている事が無謀だとわかるだろ。
あと、Cookie読む時はエスケープも解除してやれ。
0430423
02/05/04 20:24ID:???print $ENV{'HTTP_COOKIE'};
すると、
dmy=バナナ:はい,ジュース:はい,メール:hoge@***,メール:foo@+++
って入ってるなら、
$COOKIE{$cookname} .= ($COOKIE{$cookname} ? "\n" : undef) . $cookvalue;
そうじゃないなら、
Set-Cookie: dmy=バナナ:はい,ジュース:はい,メール:hoge@***,メール:foo@+++
する。EXPIRESも付けたきゃ勝手に付けてくれ。
0433nobodyさん
02/05/04 21:21ID:???_____________
(つかえねぇ奴らだな。氏ね!!)
 ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄ ̄ ̄ ̄| ___________
| ∧_∧ | ∧_∧ /
| ( ´∀`) | (´∀` ) <オマエモ・・・オレモナー??
| ( ???:bI ) .| ( Id:??? ) \
| | | | .| | | |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| (__)_) .| (_(__)
. ̄ ̄ ̄ ̄ ̄
※偽者防止のため、IDは必ず出しましょう。
PC初心者でもやってるぞ。
0435nobodyさん
02/05/04 21:24ID:GvcNIgW1sub function
{
######省略
}
を呼ぶとき
function(); と &function;
の2つのやり方あるみたいですけど、どっち使ってもいいの?
0436nobodyさん
02/05/04 21:26ID:???後者の方がいい。
汎用性のあるものを組みたいなら特に。
0437435
02/05/04 21:29ID:GvcNIgW1ありがとう。
自分が持ってる参考書にfunction()しか載ってなかったから使っちゃいけないのかと思ったよ。
0438
02/05/04 21:35ID:dGBL2sA8どうしたらよいのでしょうか?
0439412 ◆ZJG8NJmQ
02/05/04 21:41ID:???print "content-type:text/html\n\n";
ここからまずフォームを作ります。
それからログファイルを開いて読み込みます。
で表示します。
ログ書き込み処理
\nや<>とかを変換します。
そうしたらログを開いて書き込みます。
そして閉じます。
0440nobodyさん
02/05/04 21:41ID:???Perl5以降ならfunction()でいいと思うけど。
普通のプログラミング言語ではfunction()と書くので、&を付けると嫌われる。
ただでさえスカラーの前に$とか付いて笑われているのに。
一生Perlしか使いそうにないなら&functionでもいいけど。
ただし、&functionとfunction()では若干動作が異なるとだけ覚えておいてください。
0441nobodyさん
02/05/04 21:56ID:???尤も、「貧弱なプロトタイプなんぞいらん」とか
「関数なにそれ?メソッドのこと?」って人には関係ない事ですが。
0442nobodyさん
02/05/04 22:24ID:???しかし私のサイトではそれが許可されていません。
perlプログラムであるディレクトリ以下を全部回って
それぞれにindex.htmlファイルを作っていってくれるプログラムを知りませんか。
0443nobodyさん
02/05/04 22:26ID:3kOee6Z30444nobodyさん
02/05/04 22:34ID:???作ればいいじゃん。
0445nobodyさん
02/05/04 22:39ID:3kOee6Z3あっさり言いますけど。間違えてサーバー内で無限ループって恐怖があって。
0446sage
02/05/04 22:40ID:???0447nobodyさん
02/05/04 22:45ID:???0448さゆ ◆ugYa5.J6
02/05/05 00:01ID:???スレ違いな回答でわるいんだけど、
.htaccess に
Options +Indexes
って一行書いておくと、うまくいくかも。
(サーバの設定次第だけど)
0449nobodyさん
02/05/05 00:49ID:???0450&付きであろうと無かろうと
02/05/05 01:27ID:???0451nobodyさん
02/05/05 01:28ID:???どういう差があるんですかね?
rootin();と&rootin;どちらでもいい状況なら俺も後者使うんだが。
0453thanks.html
02/05/05 01:39ID:nX5kzOReアリガソ。
うむ、なんでかわ良くわからないんだけど(・・漏れってつくづく
基本がなってないヤツだ・・・)
#(ok)のほうじゃないとダメなんですね。覚えておきます。
0454nobodyさん
02/05/05 01:50ID:nX5kzORe#!/usr/local/bin/perl
$task = $in{"task"};
require "$task.pl";
として、例えば掲示板とアクセスカウンターを以下のように使い分ける
[掲示板] bbs.pl
http://hage.com/cgi-bin/index.cgi?task=bbs
[アクセスカウンター] access.pl
http://hage.com/cgi-bin/index.cgi?task=access
とした場合。
なんか不都合な事ってあるだろうか?
質問が抽象的でアレですが、index.cgiにかかる負荷というのは
普通にbbs.cgi、access.cgiとして実現した時となんら変わらない
のだろうか?
0456nobodyさん
02/05/05 02:16ID:???&dir();
sub dir {
my $dir = shift;
chdir $dir if $dir;
my @file = glob('*');
for (@file) {
&comm($dir,$_) if -f $_;
&dir($_) if -d $_;
}
chdir '..';
}
sub comm {
my ($dir,$file) = @_;
print "$dir/$file\n";
}
0457nobodyさん
02/05/05 02:39ID:???ケチ付けるようで悪いが、車輪の再発明はやめて、標準ライブラリの
File::Findを使えば?
perldoc File::Find 又は、ラクダ本のP506又は、
http://www.bekknet.ad.jp/~bero/docj/module_/10/File_Find.html
0458nobodyさん
02/05/05 03:07ID:???0459nobodyさん
02/05/05 03:30ID:???置き換えるだけ、と言っていいじゃん。最近は、ドキュメント
も読まず、自分で知恵も出さず、安易にコードをパクろうと
する厨が多すぎ。
0460nobodyさん
02/05/05 03:47ID:???0461nobodyさん
02/05/05 04:30ID:???■ このスレッドは過去ログ倉庫に格納されています