トップページ⇒tech
1001コメント317KB

Perlについての質問箱 32箱目

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2007/08/13(月) 18:01:53
Perlについての質問箱 32箱目
0951デフォルトの名無しさん2007/10/12(金) 13:32:18
次スレ立てる人はテンプレの変更よろ。

● 2007/10/12現在の最新版: 5.8.8
● 2007/10/12現在の開発版: 5.9.5

止まってるので削除:
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
Perldoc.com: http://www.perldoc.com/
0952デフォルトの名無しさん2007/10/12(金) 22:59:21
5.10まだ〜?
0953デフォルトの名無しさん2007/10/13(土) 00:46:33
ActivePerl5.8.8で
バッチファイルからwperl実行すると
wperl以降のバッチファイルの行が
実行されないのですが
どうすれば回避できるでしょうか
0954デフォルトの名無しさん2007/10/13(土) 13:49:19
>>953
start wperl......
0955デフォルトの名無しさん2007/10/13(土) 13:55:07
>>953
さてはバッチコマンドに call があるの知らないな?
0956デフォルトの名無しさん2007/10/13(土) 18:07:13
>>954-955
すいません、DOSコマンドは並べ立てる程度しか分からないのでorz
当てずっぽうにcmdとか試してみたのですがうまくいかなくて、
無理やりperl側からcmdプロセスを潰してました・・
これでバッチファイルだけできれいにできそうです。ありがとー
0957デフォルトの名無しさん2007/10/14(日) 00:00:55
100の要素数を持つ配列を定義し
すべての要素に初期値として1を入れたいのですが
一番簡単な(できれば早い)コードはどういうのでしょう?

$a[$_] = 1 for (0..99);

↑これだと遅いですよね?
0958デフォルトの名無しさん2007/10/14(日) 00:08:11
map {$_++} @x[0..99];
0959デフォルトの名無しさん2007/10/14(日) 00:28:35
my @a = (1) x 100;
0960デフォルトの名無しさん2007/10/14(日) 00:33:50
引数が全然違うだろうが。ヴァカか?(藁
0961デフォルトの名無しさん2007/10/14(日) 18:59:57
>>958-959 ありがとうございます 数パターン試してみました

$ cat timethese_array.pl
#!/usr/bin/perl
#use strict;
#use warnings;
use Benchmark qw(timethese cmpthese);

timethese(1,{
PatternFor => '$a[$_] = 1 for (0..999999);',
PatternForeach => '$_ = 1 foreach (@b[0..999999]);',
PatternMap => 'map {$_ = 1} @c[0..999999];',
PatternList => '@d = (1) x 1000000;',
});

$ perl timethese_array.pl
Benchmark: timing 1 iterations of PatternFor, PatternForeach, PatternList, PatternMap...
PatternFor: 0 wallclock secs ( 0.41 usr + 0.03 sys = 0.44 CPU) @ 2.28/s (n=1)
(warning: too few iterations for a reliable count)
PatternForeach: 1 wallclock secs ( 0.30 usr + 0.00 sys = 0.30 CPU) @ 3.37/s (n=1)
(warning: too few iterations for a reliable count)
PatternList: 0 wallclock secs ( 0.11 usr + 0.00 sys = 0.11 CPU) @ 9.17/s (n=1)
(warning: too few iterations for a reliable count)
PatternMap: 1 wallclock secs ( 0.55 usr + 0.02 sys = 0.56 CPU) @ 1.78/s (n=1)
(warning: too few iterations for a reliable count)
0962デフォルトの名無しさん2007/10/14(日) 20:43:38
> 引数が全然違うだろうが。ヴァカか?(藁

あたまたりてる?
0963デフォルトの名無しさん2007/10/14(日) 21:02:50
誤爆じゃねえの?
0964デフォルトの名無しさん2007/10/14(日) 23:47:40
>>961
追試。

#!/usr/bin/perl -w
use strict;
use Benchmark qw(timethese);
timethese(-5, {
  For1 => sub { my @arr; $arr[$_] = 1 for 0..9999; 1 },
  For2 => sub { my @arr; $_ = 1 for @arr[ 0..9999 ]; 1 },
  List => sub { my @arr; @arr = (1) x 10000; 1 },
  Map1 => sub { my @arr; map $arr[$_] = 1 , 0..9999; 1 },
  Map2 => sub { my @arr; map $_ = 1 , @arr[ 0..9999 ]; 1 },
  Map3 => sub { my @arr; map { $arr[$_] = 1 } 0..9999; 1 },
  Map4 => sub { my @arr; map { $_ = 1 } @arr[ 0..9999 ]; 1 },
});

For1: 5 wallclock secs ( 5.27 usr + 0.00 sys = 5.27 CPU) @ 129.33/s (n=681)
For2: 5 wallclock secs ( 5.27 usr + 0.00 sys = 5.27 CPU) @ 151.32/s (n=798)
List: 5 wallclock secs ( 5.32 usr + 0.00 sys = 5.32 CPU) @ 367.46/s (n=1955)
Map1: 6 wallclock secs ( 5.27 usr + 0.00 sys = 5.27 CPU) @ 117.95/s (n=622)
Map2: 6 wallclock secs ( 5.24 usr + 0.00 sys = 5.24 CPU) @ 152.23/s (n=798)
Map3: 5 wallclock secs ( 5.27 usr + 0.00 sys = 5.27 CPU) @ 112.07/s (n=591)
Map4: 5 wallclock secs ( 5.30 usr + 0.00 sys = 5.30 CPU) @ 71.93/s (n=381)
0965デフォルトの名無しさん2007/10/15(月) 00:00:53
気にするほど差がある訳じゃないな。
0966デフォルトの名無しさん2007/10/15(月) 00:50:19
>>964
追試ありがとうございます
Map2とMap4は、自分の環境で試してみると
それでも1.5倍ほどの差がありました
ブロックの有無だけで何故これだけの差がでるのか不思議ですね
0967デフォルトの名無しさん2007/10/15(月) 13:12:32
すみません、XML::SimpleのXMLin関数の
HTML版みたいなのってありますか?
HTML::Parserを中心にCPANを色々
探したのですが分からず…もしかして
HTMLは厳格な構造ではないので、
そういうのは無理なのでしょうか?
0968デフォルトの名無しさん2007/10/15(月) 14:23:50
>>967
ようはデータの構造体に変換したいってことよね?
HTML::TreeBuilderじゃだめ?
0969デフォルトの名無しさん2007/10/15(月) 14:56:48
HTML::DOMとかそんなんなかったっけ?
それのソースを眺めてみるのも手かもしれない
0970デフォルトの名無しさん2007/10/15(月) 15:13:05
>>968
ありがとうございます。HTML::TreeBuilderを見て、
HTML::Elementの関数を調べてみたのですが
XMLinみたいに綺麗なリファレンスを返してくれる
関数は自分では見つけられませんでした(英語も読めません)
お手数をお掛けしますが関数名等を教えて頂けると助かります。

>>969
ちょっとこの量のソースを読むには
気が滅入ります…すみません
0971デフォルトの名無しさん2007/10/15(月) 15:38:54
レスから1時間も経ってないじゃん
もうちょい頑張れよwww
0972デフォルトの名無しさん2007/10/15(月) 15:57:08
草い
0973デフォルトの名無しさん2007/10/15(月) 17:01:58
プログラムの「前」ってどっちですか?

$k = 0;             ← こっちが前?
for ($i = 0; $i < 10; $i++) {
  $k += $i;
}
print "こたえ=", $k, "\n";  ← こっちが前?
0974デフォルトの名無しさん2007/10/15(月) 17:06:39
>>973

↑ 後方 backward

$k = 0;
for ($i = 0; $i < 10; $i++) {
  $k += $i;
}
print "こたえ=", $k, "\n";

↓ 前方 forward
0975デフォルトの名無しさん2007/10/15(月) 17:10:52
「以前」の前じゃなく、「前に進む」の前って覚えるといいよ
とか言ってみるテスト
0976デフォルトの名無しさん2007/10/15(月) 17:51:34
後方 → orz ← 前方
0977デフォルトの名無しさん2007/10/15(月) 19:11:54
>>973
> プログラムの「前」ってどっちですか?

↑
前

後
↓
0978デフォルトの名無しさん2007/10/15(月) 19:35:05
場合によりけり
0979デフォルトの名無しさん2007/10/15(月) 19:43:55
じゃぁ
前方参照ってどっち?
後方参照ってどっち?
0980デフォルトの名無しさん2007/10/15(月) 20:02:21
小出しにせずに全部書いてくれ。
まだなんかあるだろ? それデータかなんか絡んでねーか?
0981デフォルトの名無しさん2007/10/15(月) 20:15:29
ただ上司に「プログラムの前の方を見ろ」と言われただけです。
で、「前ってどっち?」と聞き返したら、
「そんな事も分からないのか?前は前だろが。分からなかったら小学校からやりなおしてこい」
・・・と怒られちゃいました。もう涙目デスorz
でもほんとうに分からないんです。前ってどっちなのか。

人間の「前」ならわかります。顔があるほうですよね?
Q「人間の「前」ってどっちですか?」 A「小出しにせずに全部書いてくれ!」
フツー、そんな会話は無いですよね。前は前だから。決まってるもん。

プログラムの「前」は決まっていないんですか?
0982デフォルトの名無しさん2007/10/15(月) 20:21:25
俺は前は上の方だな。以前って意味に取るな。
0983デフォルトの名無しさん2007/10/15(月) 20:24:30
>>979
コンパイラは上から下へ読み勧めるから、
前方参照の前方はソースコードの下方向。
0984デフォルトの名無しさん2007/10/15(月) 20:26:13
コードの前ならたぶん上方向じゃね?
0985デフォルトの名無しさん2007/10/15(月) 20:28:57
>>981
うんこが出る穴のほうが後
0986デフォルトの名無しさん2007/10/15(月) 20:30:27
まえとうしろ  方向なので進行方向がまえ
まえとあと   時間経過なので進行方向の逆がまえ

ソースの前を見ろとか言う場合は時間経過のほうだね普通
まだ通過してない部分が時間をさかのぼって手前に影響することはありえない


ていうかおれ釣られた?w

0987デフォルトの名無しさん2007/10/15(月) 20:36:25
聖徳太子知ってる?
0988デフォルトの名無しさん2007/10/15(月) 20:40:38
>>981
気にせずソース全部見れば?
つーか「前は前だろうが」なんて答える上司もバカだな
普通に教えれりゃいいのに
0989デフォルトの名無しさん2007/10/15(月) 20:42:54
>>981
そんな事も分からないのか?前は前だろが。
0990デフォルトの名無しさん2007/10/15(月) 20:45:12
その上司って何歳よ?
0991デフォルトの名無しさん2007/10/15(月) 21:10:00
フクロウ本には前方参照と後方参照の混乱について書いてあったな。
0992デフォルトの名無しさん2007/10/15(月) 21:13:12
うん
0993デフォルトの名無しさん2007/10/15(月) 21:14:36
ソースコードの「前-後」は混乱の元なので、
「あたま-しっぽ」「上-下」と呼称したりする。
0994デフォルトの名無しさん2007/10/15(月) 21:14:39
>981
横書きの本をオマエは後ろ (下) から読むのか?
おまえ小学生からやり直せって
0995デフォルトの名無しさん2007/10/15(月) 21:17:02
そもそも、ソースコードの位置を前とか後ろとかで呼ぶか?
0996デフォルトの名無しさん2007/10/15(月) 21:22:19
普通、サブルーチン
モジュール
だよな
0997デフォルトの名無しさん2007/10/15(月) 21:43:46
箸を持つ方が前だろう
0998デフォルトの名無しさん2007/10/15(月) 22:02:18
ティムティムがいつも寄ってるほうが前
0999デフォルトの名無しさん2007/10/15(月) 22:19:32
それ右じゃね
1000デフォルトの名無しさん2007/10/15(月) 22:37:29
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。