Perl コーディング初心者質問コーナー Part25

このエントリーをはてなブックマークに追加
952nobodyさん:03/07/23 13:50 ID:???
で、それのどこが【Perl コーディング】と関係ある訳?
953nobodyさん:03/07/23 14:29 ID:???
ちょっち質問です。
HTMLを出力した後に一度バッファをフラッシュしてから
時間のかかる処理をしたいのですが
どのように書けばよいのでしょうか?
954953:03/07/23 14:37 ID:V4h+SVeU
ageわすれますた。

ついでにもう一つお伺いしたいんですが
複数の変数やら配列を undef する場合
一個づつ
undef $val; undef @array; undef %hash;
と書く以外に方法ってあるでしょうか?
ちょと面倒くさいなと思いまして。
955あぼーん:あぼーん
あぼーん
956nobodyさん:03/07/23 15:18 ID:???
undef $val @array %hash;
957nobodyさん:03/07/23 15:32 ID:???
>>953\
$| = 1; # flushする
958953:03/07/23 15:46 ID:???
>>956
ありがとです。

>>957
print $HTML;
$|=1;
sleep 5;

とやると出力を拝む前にシッカリ sleep していて
何だかフラッシュされていない気がするんですが
どういうコトなんでしょう?
959nobodyさん:03/07/23 16:22 ID:???
>>958
httpサーバが処理が全部終わるまで待ってる。
Perlが終了した時点で出力する。
960nobodyさん:03/07/23 16:27 ID:???
>>958
オートフラッシュはprintするより前で
場合によってはソースの先頭でもいいし
961967:03/07/23 16:48 ID:???
そだよ、960さんの言うように
$|=1;
print $HTML;
sleep 5;
ってしなきゃ。
962953:03/07/23 16:59 ID:???
なるほど。
print の前に書くんですね。
皆さんアリガトでした!
963nobodyさん:03/07/23 22:08 ID:???
Perl/tk[試し中]

>>942
ありがとう:こんな方法もあるんですね。勉強になりました。

>>943
ありがとう:バッチリ!です。スッキリ!です。感謝です。
気になるのは wperl.exe でも支障はないのでしょうか?
964nobodyさん:03/07/24 00:15 ID:???
>>6http://www.bekknet.ad.jp/~bero/docj/module_/ って消滅したの?
965nobodyさん:03/07/24 02:04 ID:???
リファレンス(?)で悩んでます

ニュースグループのグループリスト取得するものですが、$nntp->list の所の説明を読むと
> アクティブなすべてのニュースグループについての情報を取得する。戻り値は、
> グループ名をキー、配列へのリファレンスを値とする、ハッシュへのリファレンスである。
> 値が指す配列は、グループの最初の記事番号、グループの最後の記事番号、
> グループについての情報フラグを要素に持つ。

と、あるのですが @$group{$_} を print すると ARRAY(0x33174ec) とか表示されてしまいます
イメージ的に 最初の記事番号 最後の記事番号 フラグ と表示されると思ったんですが…

use strict;
use Net::NNTP;
{
my ( $nntp, $group );

$nntp = Net::NNTP->new( 'some.what.news', Debug => 1 );
$nntp->reader;

$group = $nntp->list;
foreach ( keys %$group ) {
print "N=$_ " . "V=" . @$group{$_} . "\n";
}
$nntp->quit;
}
966nobodyさん:03/07/24 02:09 ID:???
>>965
@{$group->{$_}}ちゃうんか。
967nobodyさん:03/07/24 02:58 ID:???
>>966
表示するようになったけど、全部同じデータでしかも、"3" というデータしかない…。
俺が思っているデータイメージは

$group = (
[ 'name', [ 1, 2, 3 ] ], # name はグループ名で、1,2,3 ... のリストがグループの記事番号とかのデータ
 ・
 ・
 ・
 (以下略)
);

と、思ってるんだけど、間違いないカナ?
968nobodyさん:03/07/24 03:05 ID:???
その語尾はやめれ
969nobodyさん:03/07/24 03:21 ID:???
なんで 3 というデータしか表示されないか解った。
print に渡した時にはスカラー値として、リストのデータが 3 あるから、
3 としか表示されなかった。foreach でもう一回ループを廻すか、
join とか使うしかないのね…。

# 青らくだ本買わないと駄目だぁ…。

$group = $nntp->list;
foreach $name ( keys %$group ) {
print "N=$name\n";
foreach ( @{$group->{$name}} ) {
print "\t$_\n";
}
}

# それにしても、グループの数が物凄いんですが…。
970nobodyさん:03/07/24 16:26 ID:kzmo+pjp
rand は時間で数字が決まります。
完全にランダムにするか、2回連続で
同じ数字は出ないようにする方法は?
971nobodyさん:03/07/24 16:40 ID:???
rand が時間によって乱数を生成するとはマニュアルのどこにも載ってないが?
972nobodyさん:03/07/24 16:48 ID:???
srandしてねーだろ。
973nobodyさん:03/07/24 16:50 ID:???
>>971
( ´,_ゝ`)プッ マニュアルダッテ
974nobodyさん:03/07/24 16:56 ID:???
>>973
( ´,_ゝ`)プッ マニュアルシラナイナンテ
http://www.perldoc.com/
Perl Manpage - Reference Manual
975nobodyさん:03/07/24 17:03 ID:???
>>974
( ´,_ゝ`)プッ ジカンデキマルノハマチガイナイヨ
      モットベンキョウシヨウナ… 
976nobodyさん:03/07/24 17:12 ID:???
>>975
( ´,_ゝ`)プッ マニュアルシラナイヤツニイワレタクナイヨ
         アトオレ971ジャナイカラ。モウソウハ ヤメヨウネ
977nobodyさん:03/07/24 17:18 ID:???
( ´,_ゝ`)プッ
http://www.perldoc.com/perl5.8.0/pod/func/rand.html
どこに時間で決まるなんて書いてあるんだ?
978nobodyさん:03/07/24 17:22 ID:???
>>970 ID:kzmo+pjp ヴァカ丸だし晒しあげ
979nobodyさん:03/07/24 17:28 ID:MQ0CG0Oj
>>978
なんでID出てないの
980nobodyさん:03/07/24 17:43 ID:???
>>967
$group はハッシュリファレンスだろ?
$group = { name1 => [ ... ], name2 => [ ... ], ... } じゃねーの?

> print に渡した時にはスカラー値として、リストのデータが 3 あるから、
自分で . 演算子使ってスカラーコンテキストにしてるだけじゃん。

while (my($name, $num) = each %$group) {
print "N=[$name] ", 'V=[ ', join(' / ', @$num), " ]\n";
}

この辺しっかり読め。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perldata.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perldsc.html
981nobodyさん:03/07/24 18:02 ID:???
次スレまだぁ〜?
982nobodyさん:03/07/24 18:02 ID:???
randが時間で決まると言うか、perl5.004以降はsrandを省略すると
srand(time)が自動的に実行されるってことだろ

>>970
完全にランダムも続けて同じ数字が出ないようにするのも
なんらかで出た値を保持する以外にないよ
983nobodyさん:03/07/24 18:08 ID:???
次スレ立てないなら埋めるぞ
984nobodyさん:03/07/24 18:32 ID:???
>>982
<q cite="http://www.kt.rim.or.jp/~kbk/perl5.doc/perldelta.html">
srandのデフォルトの種はtimeが使われていましたが、これは変更され
ました。現在では、予測するのが困難なシステム依存な値の激しい
(heady)組み合わせで、大部分の everyday purpose に十分なものです。

5.004以前では、srandを最初に呼ぶことなしに引数なしでrandを 呼んだ
場合、ほとんど、ひょっとしたらすべてのマシンで同じ乱数列を得ること
になっていました。現在、perlがそれ以前にsrandを呼び出 していないのに
randを呼び出しているのを検出したときに、perlは デフォルトの種を使って
srandを呼びます。5.004以前のシステムで実行するかもしれないような
プログラムでは、今でも srand を手作 業で呼び出すべきですし、あなたが
デフォルト以外のものを種としたい場合にももちろんそうすべきなのです。
</q>
985nobodyさん:03/07/24 18:34 ID:???
うめ
986nobodyさん:03/07/24 18:35 ID:???
梅。
987nobodyさん:03/07/24 18:36 ID:???
うめー
988nobodyさん:03/07/24 18:38 ID:???
おっぱい
989nobodyさん:03/07/24 18:46 ID:???
ランダムに文を表示するやつを持ってるんだけど
その文章をリロードしても変わらないようにしたい。1日くらい。
そういうのって出来ませんかね。
↓今の状態
#! c:/perl/bin/perl

# おみくじを引く
$role = int(rand 6);

if($role == 0) {
$kuji = '大吉';
}
(略)
else {
$kuji = '凶';
}

# CGIヘッダの出力
print "Content-type: text/html\n\n";

# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>Perlおみくじ</title></head>\n";
print "<body><p>今日のあなたの運勢は……<big>$kuji</big>です。</p>\n";
print "</html>";
990nobodyさん:03/07/24 18:52 ID:???
なんだ、ばかばかしい・・・
991nobodyさん:03/07/24 18:57 ID:???
>>989
クッキー
992nobodyさん:03/07/24 19:01 ID:???
>989
同じIP && 異なるマシン(同じ世帯の別マシン) → IPと日付を使った数字をsrandの種にする
異なるIP && 同じマシン(ダイヤルアップ接続) → クッキーを使う
異なるIP && 異なるマシン(誰が見ても変わらない) → 日付をsrandの種にする
993nobodyさん:03/07/24 19:02 ID:???
>>991
レス番がくっくいー
994nobodyさん:03/07/24 19:08 ID:???
995nobodyさん:03/07/24 19:12 ID:???
>>982
srandが実行されていない場合、最初に一度だけ初期化される。
実際にはpidやら色々な値を足してる。
あと、/dev/randomが使えるなら、timeよりそっちを優先して使うようになってるぽい。

rand自体はCライブラリのrand()を呼び出したりしてる。
オーバーライドできるので、実装によって違いがあるかも。

http://pc2.2ch.net/test/read.cgi/php/1042260745/9
乱数ならこの辺りを参照。
996nobodyさん:03/07/24 19:18 ID:???
                _∧_∧_∧_∧_∧_∧_∧_∧_
     デケデケ      |                          |
        ドコドコ   < 次スレまだーー?        >
   ☆      ドムドム |_  _  _ _ _ _ _ _ _ _|
        ☆   ダダダダ! ∨  ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨
  ドシャーン!  ヽ         オラオラッ!!    ♪
         =≡= ∧_∧     ☆
      ♪   / 〃(・∀・ #)    / シャンシャン
    ♪   〆  ┌\と\と.ヾ∈≡∋ゞ
         ||  γ ⌒ヽヽコ ノ  ||
         || ΣΣ  .|:::|∪〓  ||   ♪
        ./|\人 _.ノノ _||_. /|\
         ドチドチ!

997nobodyさん:03/07/24 19:21 ID:???
次スレ建てる人は >>4-6 辺りの dead link も調べてくれ(w
998nobodyさん:03/07/24 19:27 ID:???
>>980 あんがと。
すまんのぉ、青らくだ本持ってないから、その辺全然解らんのよ。
マニュアルサイト行ってもどこを読んでいいのやら、全然検討違いな所読んでた<俺
999nobodyさん:03/07/24 19:27 ID:???
( ゚∀゚)つ〃∩2ゲット2ゲット2ゲット
1000999:03/07/24 19:27 ID:???
999
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。