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

Perl 初心者コーナー Part24

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆fBgbHI04bQ 03/06/07 22:30ID:GbQKLcPE
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


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

過去ログやお勧めサイトは >>2-10
0353 03/06/14 22:44ID:???
質問します。

アクセスログのファイルのファイルハンドルをFとすると

@line=<F>;

のようにするのは、よくないとどこかで見たのですが
ファイルサイズが小さい場合でも駄目なのでしょうか?
もしよかったとして、どれくらいのサイズまでなら大丈夫なのでしょうか?
もし過去ログにあるのならば、どのあたりの過去ログにあるかを教えて欲しいです。

よろしくお願いします。
0354nobodyさん03/06/14 22:47ID:???
>>352
system("ping");
0355nobodyさん03/06/14 23:03ID:???
>>353
小さきゃかまわないよ。
どのくらいのサイズまで大丈夫かなんて、環境によって違うので分からない。
「みんなはどれぐらいで線引きしてるか」の答えなら得られるかもしれない。
0356nobodyさん03/06/14 23:06ID:???
>>353
別に良くも悪くも無い
自分の用途によって使い分ける
0357nobodyさん03/06/14 23:11ID:???
>>349
「プロトタイプ」でググってみりる。
0358 03/06/14 23:19ID:???
>>355
>>356
レスありがとうございます。
なるほど、確かに環境によってかわりますよね。
では、どのくらいの大きさで区別をなさってるのでしょうか?

私は30〜50k程度のファイルでする予定です。
0359nobodyさん03/06/14 23:33ID:???
そんぐらいだと、一行づつ読んだ方がいいと思う。
0360nobodyさん03/06/14 23:33ID:???
>358
なんで差が出るかの理由を考えろ。
その方が早い。
0361nobodyさん03/06/14 23:35ID:???
ちなみに、私はカウンターとかダウンロード用のスクリプトみたいな、
かなり小データ以外は一行筒読んでます。
0362nobodyさん03/06/14 23:36ID:MAEKWf+y
SSIでCGIを呼び出そうとして失敗したときに
[an error occurred while processing this directive]
というエラー文が.sthmlファイルの中に出てくるんですが、
この文章を自由な文面に変更したり出来るんでしょうか?
0363nobodyさん03/06/14 23:42ID:???
シーケンシャルな処理でいいなら一行ずつ
ソートするとか、順序を入れ替えるとかしたいなら、一括で
0364 03/06/14 23:55ID:???
>>359>>360>>361>>363

またまたレスありがとうございます。

>>359
なるほど、1行ずつのほうがいいですか。
変更はすぐできるのですが、15〜20kくらいのファイルでもだめでしょうか?


>>360
1行に記録するデータの項目がある場合と無い場合があるからです。
例えていったら、掲示板で名前だけ書く人と、名前もメアドも両方書く人がいる、みたいな。
0365nobodyさん03/06/15 00:01ID:???
>>364
大きさだけじゃない。
例えば、速攻で作らなきゃならない、使い捨てのスクリプトを占有サーバで実行するなら
数十MBでもやるかもしれない。
0366 03/06/15 00:13ID:???
>>365
レスどうもです。
有料ですがレンタル鯖なので他の人に迷惑がかからないように
1行ずつ処理した方がよさそうですね。
ありがとうございました。
0367nobodyさん03/06/15 02:55ID:???
ディレクトリの作成日時ってどうやって取得するんですか?
0368nobodyさん03/06/15 03:19ID:???
>>367
stat
0369nobodyさん03/06/15 04:19ID:???
セッション管理を一時ファイルを作る形で実現させたいと思っているのですが、
プロセス番号($$)のファイル名を作成させて管理する形式でユニークに
しようかと思っております。

プロセス番号で管理すれば、完全にユニークになると考えて宜しいのでしょ
うか。
まだまだ初心者のため、自信がありません。
どうか教えていただければありがたいです。
0370nobodyさん03/06/15 05:09ID:???
>>367
(stat("dir"))[9]
0371nobodyさん03/06/15 05:34ID:???
あ、、、
FFFTPで表示されてる、サーバーにあるディレクトリの作成日時と
(stat("dir"))[9] 使って取得した日時(unixtime)が一致してない・・・・・

なぜだろう
0372nobodyさん03/06/15 06:24ID:m8nOAT8L
サブルーチン名を変数にして実行する方法はありません
でしょうか。どうもうまくいきません。
0373nobodyさん03/06/15 06:39ID:???
>>372
こういうやつ?

$foo = \&bar;
$foo->();

sub bar {
print "manko";
}
0374nobodyさん03/06/15 10:52ID:???

$hoge = "test";

&$hoge;

sub test{

}
0375nobodyさん03/06/15 17:55ID:fAURPzIq
CGIを転送したつもりなのに、
機能してませんよね。以下↓
http://www.keddy.net/~gekiya77/ore_plus_v02-04-16/
原因が分かるのならば、教えて下さいませ。
0376nobodyさん03/06/15 18:08ID:???
>>375
パーミッションがない
0377nobodyさん03/06/15 18:51ID:???
>>375
マルチ先でも言われてるが、パーミッションに問題がある。
0378nobodyさん03/06/15 18:58ID:???
>>371
0379nobodyさん03/06/15 19:01ID:???
>>378
ディレクトリ作成なら (stat("dir"))[10] ではどうだ?
0380nobodyさん03/06/15 19:32ID:???
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
0381nobodyさん03/06/15 19:37ID:???
>>380
パーミッションって「許可」っていう名詞だよ。
「『実行パーミッションがない』と言え」って意味かな。
0382nobodyさん03/06/15 19:48ID:???
ミッションがないパー
0383nobodyさん03/06/15 20:01ID:???
釣られすぎ(w
0384nobodyさん03/06/15 20:07ID:???
>>380=>>383
苦し紛れの言い訳?
0385nobodyさん03/06/15 20:27ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


煽りや荒らしは放置で
次の方どうぞ。
0386nobodyさん03/06/15 20:36ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


煽りや荒らしは放置で
次の方どうぞ。
0387nobodyさん03/06/15 20:49ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


煽りや荒らしは放置で
次の方どうぞ。
0388nobodyさん03/06/15 20:50ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


煽りや荒らしは放置で
次の方どうぞ。
0389nobodyさん03/06/15 21:03ID:m8nOAT8L
>>373-374
ご返答有難うございます。
やりたいことは>>374さんのようなことなのですが、
このように実行すると、
Bad name after main:: at -.cgi
と出てしまいます。

use strictをはずせば回避はできるのですが、
いろいろと試してみたいと思います。
ご親切に有難うございました。
0390nobodyさん03/06/15 21:04ID:QzYzFnUN
みてね〜♪
http://www1.free-city.net/home/s-rf9/page004.html
http://www1.free-city.net/home/s-rf9/page005.html
0391nobodyさん03/06/15 21:20ID:???
>>389
%funcs = (
hoge => sub {return 1},
hage => sub {return 0}
);

$name = 'hage';
print $funcs{$name}->(), "\n";
0392nobodyさん03/06/15 22:12ID:???
>>379
それでもだめでした。
違う日付になってしまいます。
0393nobodyさん03/06/15 22:17ID:???
389とちょっとかぶっちゃうかもしれませんが、%{変数}でエラーが
出てしまいます。strictはずせばいけるのですが、、、
先生方、もしお分かりでしたら教えてください、、、
0394nobodyさん03/06/15 22:43ID:???
>>393
それはソフトリファレンスだからではないか?
変数の部分は文字列が入っている?

回避方法としては、
1.プログラムの構成を考え直す(ソフト・リファレンスを使わない)
2.no strict;を直前に入れる。
3.eval を使う。
などが考えられる。
0395nobodyさん03/06/15 22:45ID:???
>>392,>>393
>>1
>【投稿する際の注意】
>質問するときは内容をよく吟味してから投稿してください。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>最低でも1と3が無いと誰も答えられないよ。
0396nobodyさん03/06/15 22:48ID:???
>>394
そのとおりでございます。
変数の部分には文字列がはいっております。
リファレンスから勉強しなきゃ駄目ですね。
本当にご親切に有難うございました。
0397nobodyさん03/06/16 00:08ID:CSJJat6/
指定したURLのソースを取得したいのですが、Perlで可能でしょうか?
もし可能でしたらやり方を教えてほしいです。
0398nobodyさん03/06/16 00:16ID:???
>>397
LWP
0399nobodyさん03/06/16 00:35ID:???
mkdir関数でディレクトリをパーミッション777で作成したのですが
755で作成されてしまいました。
ラクダ本を読んでみたところ
>数値MODEで指定したパーミッション(を現在のumask値で修飾したもの)を持つ
とあるのですが、umaskで修飾とはどういうことなのでしょうか?
原因の分かるかたがいらっしゃいmしたらよろしくお願い致します。

以下の様にやっています
mkdir( './dir', 0777 ) or die( "ディレクトリを作成できません\n" );
0400nobodyさん03/06/16 00:56ID:???
>> 399
print umask; # 現在値
my $umask = umask 0; # umask を 0 にし、前の値を退避
mkdir ...
umask $umask; # 元に戻す

see also: http://www.google.co.jp/search?q=umask&hl=ja&lr=lang_ja
0401nobodyさん03/06/16 00:57ID:???
>>397
普通にGETしても割と簡単だし、面白いからやってみるべし
0402nobodyさん03/06/16 01:13ID:???
>>395
>>371
0403nobodyさん03/06/16 01:49ID:DMh466I+
掲示板を作っているのですが、
$content =~ s/([a-zA-Z0-9\.\-\_]+@[a-zA-Z0-9\.\-\_]+)/<a href=\"mailto:$1\">$1<\/a>/g;
↑この正規表現で、$content内に”(sage@hoge.com)”(←カッコは全角)
という文字が含まれていた場合、最初のカッコ部分で文字化けしてしまいます
・・・というか、IEでは<a>タグの"<"部分が文字化けしてそれ以降の
</a>部分までのHTMLが表示されてしまい、NN6ではsage@hoge.comの前に
余計な文字がくっついたものにリンクが貼られている状態になってしまいます
文字化けせずに、”sage@hoge.com”だけがマッチするようにするには
どうしたら良いでしょうか?
0404nobodyさん03/06/16 02:30ID:???
>>403
ttp://www.din.or.jp/~ohzaki/perl.htm
0405nobodyさん03/06/16 02:35ID:cMLQJvQF
自分なりに検索をしたのですが、解決策は見つかりませんでした。
探し方が悪いのかもしれませんが…

ファイルオープン時に、対象ファイルがないと『Internal Server Error』が表示されるのですが、
このエラーの変わりにメッセージを表示、もしくはHTMLで作成したエラーページにジャンプ
させたいと思っています。

そこで、まずはメッセージの表示から挑戦したのですが、上手く行きません。

$fname1 = "ファイルのパス/ファイル名";

open(FILE, "$fname1") or die "File Open Error.\n";
open(FILE, "$fname1") || die "File Open Error.\n";
open(FILE, "$fname1") or &Error "File Open Error.\n";
open(FILE, "$fname1") || &Error "File Open Error.\n";

以上のどの方法でも『Internal Server Error』が表示されています。

ファイルのパス/ファイル名は、HTMLフォームに入力された内容を取得しているのですが、
存在するファイル名を指定すれば、正常にファイルの入力は行われます。

以上、説明の不備等あるかもしれないのですが、よろしくお願いします。
0406nobodyさん03/06/16 03:15ID:???
>>405
CGIでdieするのはあんま意味ないです。
sub Errorのほうではちゃんとヘッダとか出力してますか?
0407nobodyさん03/06/16 03:22ID:X/Zl1g96
Apacheで print 'a' 等の後、エラーが出た場合バッファをクリアしてエラーを出力したいのですが、
バッファをクリアするにはどうすればいいのでしょうか?
0408nobodyさん03/06/16 03:29ID:???
>>406
レス有難うございます。

> sub Errorのほうではちゃんとヘッダとか出力してますか?

&Errorって、dieの代わりに使う…ってモノじゃ無いんですね…
どうも的違いの事をやってしまっているようですね。
もう少し勉強してから質問するようにします。

なんにせよ、解決に向かって一歩進んだような気がします。(気のせい?)
本当に有難うございました!
040940503/06/16 03:40ID:???
解決しました!
下記のようにすることで、無事にエラーページに飛ぶ事が出来ました。

open(FILE, "$fname1") or &Error;

sub Error{
print "Location:エラーページのURL\n\n";
}

>>406さんにヒントをもらえたおかげです。有難うございました!
また、板汚し失礼いたしました。
0410nobodyさん03/06/16 03:45ID:???
>>403
これでどうだ?
文字化けしそうな時は、スペース1個入れてごまかしてみた。

$content =~ s|(?<=[\x81-\x9f\xe0-\xef][\x40-\x7f])([\w\.\-]+@[\w\.\-]+)| $1|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
0411nobodyさん03/06/16 04:06ID:???
>>410
ごめん。間違い。
↓こうしないと失敗するかも。

$content =~ s|((?:[\x81-\x9f\xe0-\xef][\x40-\xfc])*(?:[\x81-\x9f\xe0-\xef][\x40-\x7f]))([\w\.\-]+@[\w\.\-]+)|$1 $2|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
0412_03/06/16 04:23ID:???
http://homepage.mac.com/hiroyuki44/
0413nobodyさん03/06/16 08:18ID:???
perlができることを自慢するために何か証明になる資格試験とかありませんか。
Cとかjavaとか、Linux、word、一太郎などまであるわけですが、perlはなぜか
聞かない。


0414nobodyさん03/06/16 08:44ID:???
とても初歩的な質問で申し訳ないのですが、

2003年6月16日(月)8:44

という文字列から
「6月16日(月)」と「8:44」
を取り出すにはどうしたらよいか教えていただけませんか?
よろしくお願いします。
0415nobodyさん03/06/16 09:06ID:???
>>414
$hiduke='2003年6月16日(月)8:44';
@hiduke=$hiduke=~m/(\d+月\d+日\(.+?\))(\d+:\d+)/;
print "@hiduke";

0416nobodyさん03/06/16 10:42ID:QXmqryyp
>>413
http://www.dtek.chalmers.se/groups/icfpcontest/
これで優勝すると「無制限に自慢する権利」を得ることが出来ます。

http://slashdot.jp/developers/03/06/13/1610225.shtml?topic=58
0417nobodyさん03/06/16 10:52ID:01UxcTvV
質問です
エディタで見るとちゃんと改行されて見れますが
log.dat内でも改行される様に
するのはどすればいいのでしょうか
すんません。初歩的質問で
よきお知恵を

例えばこんなのです

$log = $ENV{'HTTP_REFERER'};

open(LOG, ">>./log.dat");
print LOG "$log\n";
close(LOG);
0418nobodyさん03/06/16 11:04ID:???
>>417
意味不明。
log.dat内でも見られるってどういう意味?
改行っつったら、文字コードの話か、<br>の話か。

ともかく落ち着いてわかりやすく説明してくれ。
0419nobodyさん03/06/16 11:38ID:01UxcTvV
>>418
すんません。ちょっと落ち着いてみます。

えーと
FTPとかでlog.datを落としてメモ帳で見る、もしくは
その場でメモ帳とかで開くとlog.datがバイナリなので
改行されず見難いです。

まあ普通にエディタ使えばいいじゃんと
言われればそうなんだけど
出来ないのかなぁ と

うぐ、なんか説明へただぽ
0420nobodyさん03/06/16 11:41ID:???
>419
激しくスレ違いだな。
改行コードの問題だ。
素直にエディタ使え。
0421nobodyさん03/06/16 11:43ID:???
>>419
うむ、たしかにちとスレ違い。
まあ、どうしてもメモ帳が使いたいなら、SJISにして書き込むなり
なんなりしたまい。
果てしなく意味のない行為だとは思うが…。
0422nobodyさん03/06/16 11:51ID:???
>>419
バイナリ?だって、そこが勘違いの元じゃないかな。
HTTP_REFERRERは、飛んでくる前のページだから、普通のテキスト
ファイルのはず。改行コードがLFだけだとしても、windows PCだと
行がつながらないはず。Macだと?逆に、CRだけだと、windows PC
で見ると行がつながる。とっちか確かめて、
s/\r/\r\n/とか、s/\n/\r\n/とかすりゃいいんじゃ?

0423nobodyさん03/06/16 11:53ID:???
awkのnextfileは、Perlではどうすればいいですか。
たくさんあるファイルの1行目だけ表示したいんですが、
perl -ne 'print if $. == 1;'
だと1つのファイルだけしか処理できないんで困ってます。
よろしくおながいします。
042441903/06/16 11:56ID:???
みんなすまんぽ

いろいろ調べても解からなかったので
かなーりパニックになってたぽ

>>422
なんか道が開けたぽ
0425nobodyさん03/06/16 11:57ID:AbGOHEQT
>>401
すみません、普通にGETとはどういうことでしょうか…?
それが分からなくて困ってます。
0426nobodyさん03/06/16 12:02ID:???
>>423
1行読込をたくさんあるファイルに対して繰り返し行う
0427nobodyさん03/06/16 12:04ID:???
>>426
どいうこと?ワイルドカード使ってやる方法キボンヌ。
awkにできてPerlにできないはずないだろうから。
0428nobodyさん03/06/16 12:07ID:???
>>425
http://www.google.com/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&safe=off&c2coff=1&q=perl+http+get&lr=lang_ja
0429nobodyさん03/06/16 12:11ID:???
>>427
できません
0430nobodyさん03/06/16 12:18ID:8IGausxn
>>428
ありがとうございます
0431nobodyさん03/06/16 12:19ID:???
>>429
厨め。できたよ。教えてやらない。
0432nobodyさん03/06/16 12:59ID:???
>>425
>>398は無視か?この糞野郎。二度と来んなボケ。氏ね。
0433nobodyさん03/06/16 13:34ID:???
この場合は
$a = 0;
if (!$a)
真でいいんですよね。
では↓こういう式の時は
if (!($a==0 && $b))

変数が
$a = 1 $b = 1 の時は 偽
$a = 1 $b = 0 の時は 真
$a = 0 $b = 1 の時は 偽
$a = 0 $b = 0 の時は 偽

でいいのかなそれとも

$a = 1 $b = 1 の時は 真
$a = 1 $b = 0 の時は 真
$a = 0 $b = 1 の時は 偽
$a = 0 $b = 0 の時は 真

こっちでしょうか? よろしくお願いします。
0434nobodyさん03/06/16 13:50ID:???
>>433
そこまでわかってるなら自分で試せよ…。
0435nobodyさん03/06/16 13:56ID:???
>>419
ASCIIモードで転送しろ
と誰も言わないのはなぜだ・・・
0436nobodyさん03/06/16 13:59ID:???
>>433
なんだ、そのif文の条件は。
ただの嫌がらせだろ。

$aが真であり、なおかつ、$bが偽の場合という条件。
0437nobodyさん03/06/16 14:08ID:???
>>434
自分で書いたものではなくて試そうにも中に実際中に何が
はいっているのかも解らず1つ1つ解決していこうとは思っているのですが、
検索したり、リファレンスみたりしてるのですが、こういった例が見当たら
なかったので質問しました。よろしくお願いします。
0438nobodyさん03/06/16 14:13ID:???
>>436
ありがとう。助かりました。
0439nobodyさん03/06/16 14:32ID:???
>437
ローカルにテスト環境を作って試す。
これ常識。
マジで。
0440nobodyさん03/06/16 14:40ID:???
>>439
一応ためしているのですが
解ったことは
$a = 0 $b = 0 は実行されているみたいです。
でもそれだとアレ?
0441nobodyさん03/06/16 14:41ID:???
>>437
まあマジレスすると

$a=1;
$b=1;
if (!($a==0 && $b)){
print "ok\n";
}

こんな感じにして、4回変数を書き換えればテストは出来る。
記述が正しいかの動作確認だけなら、一々スクリプト全体を
見直す必要は無い。
0442nobodyさん03/06/16 15:37ID:???
>>441
ありがとうございます!!
結果がわかりました。
でも、頭で理解しようとすると自分にはとても難しい。。。
0443nobodyさん03/06/16 17:25ID:0o9Ehb4h
メールフォームを作ってます。
$addr = $ENV{'REMOTE_ADDR'};
でIPアドレスを取得するように設定したのですが
友人に送ってもらったメールのIPアドレスと自分で送ってみたものが
同じIPアドレスになってました。
なんでー???
0444nobodyさん03/06/16 17:32ID:???
>>443
念のため確認だが、実は二人とも同じケーブルで同じ収容局とか、
そういった落ちは無いよな?
0445nobodyさん03/06/16 17:34ID:???
>>443
> なんでー???
あなたの描いたスクリプトがバカだから。
と答えて欲しいの?
0446nobodyさん03/06/16 17:34ID:???
>>443
REMOTE_ADDRが同じだったから。
0447nobodyさん03/06/16 17:45ID:???
>>425
$port = getservbyname('http', 'tcp');
$iaddr = inet_aton($host);
$sock_addr = pack_sockaddr_in($port, $iaddr);
socket(SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, $sock_addr);
select(SOCKET); $|=1; select(STDOUT);
print SOCKET "GET /$path HTTP/1.0\r\n";
print SOCKET "\r\n";
@get = <SOCKET>;

こんな感じで
044844303/06/16 18:05ID:0o9Ehb4h
REMOTE_ADDRは同じではないと思います。
住んでる所は友人は関東で私は中部だしプロバイダーも違うし。
$addr = $ENV{'REMOTE_ADDR'}; の箇所以外に
IP取得に干渉するものがあるんでしょうか?
もちょい試行錯誤してみます。
0449nobodyさん03/06/16 18:43ID:???
1秒ごとに@dataの文字を書き出したいのですが、
↓のようにすると、sleep(1)×配列の個数ぶん待った後
一気に出力されます。。
1文字づつ1秒間隔で出力したいのですが、、どこがまちがってますか?


@data = ("あ","い","う","え","お","か","き","く","け","こ");

print "Content-Type: text/html\n\n";
print "<html>\n";
print "<title>self</title>\n";
print "<body>\n";

for($i=0; $i<=$#data; $i++){
print "$data[$i]<br>\n";
sleep(1);
}
0450nobodyさん03/06/16 19:35ID:???
>>449
CGIスクリプトとして動かしてる?
0451nobodyさん03/06/16 19:42ID:???
>>450
どういうことでしょうか?
ローカルで動かしているんですが、
AddHanderもして、
拡張子もcgiで、ちゃんとスクリプトのはずですが。。。
0452nobodyさん03/06/16 19:47ID:???
>>448
REMOTE_ADDRを記録して、それが同じだったということはREMOTE_ADDRが同じだったということではないですか?
>>451
CGIは全部実行した後出力するんだよ。たしか。
■ このスレッドは過去ログ倉庫に格納されています