[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 22:14 / Filesize : 220 KB / Number-of Response : 914
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:54:12 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 pc8.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3

前スレ
Perlについての質問箱 29箱目
pc11.2ch.net/test/read.cgi/tech/1166708139/

リンク集は>>2-3
過去スレは>>4

679 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:18:11 ]
1行で書けるかれしれんが、書く人の労力は20行だよ。

680 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:30:26 ]
でも短く書く技術は知っておきたいかも。
サブルーチンは、多少汚くても短くまとめたいし。
なんか良いサイト無い?

681 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:31:39 ]
結局、正規表現アクロバットきぼんってこと何でしょw

682 名前:クロニクル ◆ob60wHXQlc [2007/05/20(日) 23:32:46 ]
VISTAでACTIVE PERLをインストールしたいんですが、

Build 820 setup

CustomsetUP のところでInnstlationErroが出るんです。
初心者なのでわからないことがたくさんあります。
以前XPで何度かインストールしたのですが、VISTAになったとたんできなくて
苦労しております。どうかご教授お願いいたします。



683 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:34:48 ]
>>680
一子相伝も特殊技術だから。

684 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:45:25 ]
正規表現使ってアクロバットするのと、正規表現使わずに少し長いの書くのって、
正規表現使ったほうが早いとかある?

685 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:48:10 ]
そんなの場合によるとしか言いようがないだろ。

686 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:51:35 ]
>>680
このスレの前の方だけでもいくつかあると思うよ。
過去ログ辿ればもっとあるし。

687 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 00:12:00 ]
結城浩の『Perlクイズ』の過去ログ漁ってみるとか
(結城さんではなく回答者が時々アクロバティック)



688 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 15:57:04 ]
>>667のコメントだけで、後はスルーすれば良かったのにな

689 名前: [2007/05/21(月) 16:50:18 ]
CGIを自由に使えるようになりたくて独学で勉強しようとしたのですがCGIはPERL
記述?だからと思いPERLの詳しくなればわかると思いこの板にきました。
PERLに強くなるにはなにを学べばいいですか?ラクダ本というのがいいとどっかで
見たのですが間違いないですか?
そもそもCGIを自由に使えるようになるのはPERLを詳しくなっても意味ないですか?
CGIを自由に扱えるようになりたいので勉強の仕方わかる方お願いします。

690 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:54:26 ]
日本語がお上手ですね!

691 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:57:15 ]
>>1
> CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
> CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
> (WEBプログラミング板 pc8.2ch.net/php/ )

692 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 18:50:54 ]
>>691
向こうでも相手にされていない件についてw

693 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:01:22 ]
>689
かわいそうだからマヂレスしてあげるよ

勉強しなほうが身のため

694 名前:8 [2007/05/21(月) 19:01:30 ]
気長に待ちますよ^^

695 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:01:48 ]
相手にできる最低レベルってのはあるからな

696 名前:8 [2007/05/21(月) 19:02:41 ]
勉強しなほうが身のため
なぜ!?



697 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:03:45 ]
日本語でおk



698 名前:8 [2007/05/21(月) 19:07:37 ]
相手にできる最低レベルってのはあるからな
悲しいこと言うなぁ・・

699 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:08:32 ]
しゃぶれよ

700 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:11:06 ]
とりあえず句読点を勉強しる!

701 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:37:26 ]
こういう低レベルな質問はwebprogでやれよ

702 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:39:59 ]
お前が >>8 氏でないことだけは確かだ。名前欄の詐称を止めろ
CGI を覚えるより何より、ここの使い方をまず真鍋

703 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:50:23 ]
そして>699

704 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:19:43 ]
>>689
マジレスするのもどうかと思うが、
CGIを勉強したいならラクダ本よりネズミ本がオヌヌメ。
Perlをきちんと習得したいなら、ラクダ本よりリャマ本をまず嫁。
リャマ→ラクダ→ネズミの順で読むといい。
後はWebProg板逝け。

705 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:23:45 ]
逝く前にしゃぶれよ

706 名前:8 [2007/05/21(月) 21:24:52 ]
ここは恐いインターネッツですね

707 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:38:57 ]
リャマの次にラクダ読んだら死ぬって

タダで読めるPerl本
ttp://www.perl.org/books/library.html
ネズミ(初版)
ttp://www.oreilly.com/openbook/cgi/

ただリャマだけは小遣い溜めてでも買うべきだと思うんです



708 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 23:06:21 ]
個人的にはリャマの次にCookbookでもいいと思う。
ラクダも読み物として面白いけど、Cookbookのほうが実践的なテクニックを身に付けられるんでないかな。

709 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 23:57:50 ]
CookbookもいいけどPBPも読んだほうがいいと思う
なんつーか、その、K○NTクローンが増えても困るっつーか

710 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:20:38 ]
中途半端な伏字を使うやつは大抵頭が悪い

711 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:38:13 ]
やっぱ王道は
○ャ○から入って、○○○と○○○○○○○○を併用さ。
ラクダ?○○○○○○c で十分



…中途半端じゃない伏せ字も頭悪い。

712 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:52:26 ]
Perl Hacksでハァハァする

713 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:56:24 ]
>>711
> ○ャ○から入って、○○○と○○○○○○○○を併用さ。
ジャバ、コボル、N88BASIC?

> ラクダ?○○○○○○c で十分
わがんね。

本題のほうは「なんでバレバレの伏せ字を使う人がいるのか」が昔から不思議。

714 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:04:42 ]
perldoc

715 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:08:17 ]
>>713
あえて理由付けするなら、検索に引っかからないため。
まぁ、やってる方の心理としては○○だと思うがw

716 名前:713 mailto:sage [2007/05/22(火) 01:20:11 ]
>>714
ボケが思いつかなくて「わがんね」でした。手間をかけさせてごめんなさい。

>>715
うーん、検索ですか。なるほど。
でも、△△△にする○○の大半は××なだけなんでしょうね。

717 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:51:29 ]
○○○○、○○○○○○○○。



718 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 02:37:09 ]
はじめまして。最近Perlを使い始めた初心者です。

useを使用し、下位ディレクトリにあるモジュールを読み込むには

use ディレクトリ名::モジュール名;

なのはどの初級者本にも書いてあるのですが、
上位ディレクトリにあるモジュールの読み込み方が分かりません。
パスはどう書けばよろしいのでしょうか?


719 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 03:48:18 ]
use lib

720 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 07:22:32 ]
>>710
十代後半の女オタクの馴れ合いみたいで気持ち悪いよね。

721 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 08:20:44 ]
○まん○

722 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 13:39:11 ]
○ま○こ

723 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:24:14 ]
○まんこ

724 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:43:31 ]
8まんこ

725 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:58:39 ]
レベルの低い会話はwebprogでやれ

726 名前:デフォルトの名無しさん [2007/05/22(火) 16:30:10 ]
>>719
ありがとうございました。できました。

727 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:07:33 ]
>>725
爆笑



728 名前:デフォルトの名無しさん [2007/05/22(火) 18:08:03 ]
cgiでPOSTされたデータを標準入力から一度取得した後
同じプログラム内で再度、標準入力から取得することは可能ですか?

既存のプログラムに、入力チェックを追加したいのですが、2回目はデータが空になります(当たり前?
一応、seekしてみたのですが、うまく戻りそうにありません
バカな質問している気がしていますが、「そんなことできるワケねぇだろ、バカ」でも良いのでアドバイス下さい

729 名前:デフォルトの名無しさん [2007/05/22(火) 18:11:19 ]
ワークの変数にとっといたらいいんじゃないの?

730 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:23:30 ]
>>728
>>1

731 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:25:33 ]
標準入力がSEEKで戻れたらすごいな
過去に戻れるなんて素敵だぜ

732 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:26:16 ]
なるほど、WEBプログラミング板で聞くのが良かった内容でしたか
すみませんでした
そちらで質問してみます

733 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:41:44 ]
>>731
このコメントだけで十分な説明になってるな

734 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:03:04 ]
CPAN探せばありそうだが普通に変数に入れといたほうが楽だろうな

735 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:34:55 ]
リャマ本なんであんなに高いの?

736 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:36:07 ]
古本買え

737 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:45:58 ]
2版の厚さがちょうどよかったよね(´・ω・)



738 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:49:02 ]
-P オプション で使えるCのプリプロセッサですが
起動が多少遅くなるので
別な方法がないか教えてもらえませんか

使用用途としては
下記のようなものです
単にifで分けると モジュール部もすべて読み込むようなので
両方ともないとエラーになりました
evalで囲めばそれっぽくうごきますが
しっくりきません。

#ifdef HOGEHOGE
use HOGEHOGE;
〜〜〜
#else
use HOGEHOGE2;
〜〜〜
#endif


739 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:51:27 ]
>>738
UNIVERSAL::require 使えば解決するようなコトじゃないかな?


740 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:52:13 ]
質問では、条件で分けたいのはuseだけじゃないっぽいけど:

use $ENV{'HOGEHOGE'};
とかして環境変数HOGEHOGEから渡せないかなと思ったがダメだった。


741 名前:738 mailto:sage [2007/05/22(火) 22:58:53 ]
>>739-740
趣旨的には 740のとおり useだけじゃなくて
汎用的に使える方法がないかと(まぁ -Pで出来るんですがあんまり標準的じゃないような気がして)

目的としては、環境がある程度違っても
ソースを複数管理するのは面倒なので同一ソースで動かしたいです
下記のようなのも出来ると非常に助かります

#ifdef hogehoge
while(1) {
#endif
〜〜〜〜〜
#ifdef hogehoge
}
#endif


742 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:39:45 ]
evelじゃちょっと違うよな

743 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:41:58 ]
BEGIN { eval }
かと思ったけどなんか違うよね

744 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:20:43 ]
よく判らんのだが、
-P 使うからには、pure perl じゃなく C 関係?
それとも pure perl でホスト毎に挙動を変更したいの?

前者だったら、 Inline::C と後述を噛み合わせて…
後者だったら、ベタだけど Sys::Hostname で hostname ゲットして
BEGIN{if ( $hostname ...){}else{} } あたり?
後者なら、もっとべたべたにソース全般で挙動を分けられるし、
実際やってるけど、前者だったらやろうと云う気にもならぬ。
って素人の口出しすまぬ。

745 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:29:53 ]
OOで書いて環境依存部分はサブクラスに分けるが良いよ

746 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:52:02 ]
俺は環境依存部分は、モジュール化して突っ込んであるなあ
ソコでSys::Hostnameは使っているけど、もっと良い手があれば知りたいものだ

747 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 01:16:42 ]
俺はwindowsローカル時はbatファイルで適当に環境変数設定して
その環境変数によってunix系の時と動作変えてる。



748 名前:738 mailto:sage [2007/05/23(水) 08:38:37 ]
>>744
当面の目標としては
PurePerlでmod_perl2(ModPerl::RegistryPrefork)とFastCGIで
同一ソースを使えるようにしたいと思ってます
FastCGI対応にするためには
読み込みモジュールの差し替え(CGI->CGI::Fast)とループ処理が増えるので
738,741のようなことができないかなと思った次第です、
良い方法がないかなと

749 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:35:25 ]
そんな用途かよ
Catalystあたりを参考にしれ

750 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:49:31 ]
なるほどFastCGIか。
Rubyだとわりと簡単にFastCGI対応できるみたい。
Perlでも同じようにできないかな?

既存のCGIを変更無しでFastCGIに
ttp://sugi.nemui.org/wiki/%B4%FB%C2%B8%A4%CECGI%A4%F2%CA%D1%B9%B9%CC%B5%A4%B7%A4%C7FastCGI%A4%CB

751 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:55:29 ]
てか、CatalystとかCGI::Applicationとかのフレームワーク使えばいいじゃん。

Catalyst::Engine::FastCGI
search.cpan.org/~mramberg/Catalyst-Runtime-5.7007/lib/Catalyst/Engine/FastCGI.pm

CGI::Application::FastCGI
search.cpan.org/~naoya/CGI-Application-FastCGI-0.02/lib/CGI/Application/FastCGI.pm

752 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 12:07:10 ]
>>738がなんでわざわざWebProg板からこっちに着たのかわからない


753 名前:デフォルトの名無しさん [2007/05/23(水) 14:12:31 ]
すみませんが 質問させてください

あるファイル(数万行の数字データ)の上から1行ずつ順番に読み込んで
最終行になるとまた1行目に戻って・・・という作業をしたいのです
途中でプログラムを閉じて再開したときも次の行から開始が可能であれば
もう言うことナシですが,残念ながら自分では何とも出来ず

丸2日間ネット上で調べに調べ

srand();
open(FILE, "data.txt");
rand($.) < 1 and $line = $_ while <FILE>;
close(FILE);
$line =~ s/\n//g;

とランダムで1行読み込む仕様で妥協するのが限界でした
もし上記作業がperlで可能でしたら申し訳ないですが
教えていただけないでしょうか

可能な方いらっしゃいましたら どうかお願いします。

754 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:13:46 ]
いつ終わるんだそれは

755 名前:753 mailto:sage [2007/05/23(水) 14:27:55 ]
すみません
イカのような感じで半永久的に作業が続くわけでして・・・^^;

print <<"_HTML_";
Content-type: text/html

<html><head>
<meta http-equiv="refresh" content="5; url=aaa.cgi">

756 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:34:48 ]
何行目まで読んだかどこかに書いとけばいいじゃん。

757 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:38:03 ]
>>755の「イカ」がどっから出てくるのかがわからん。

とりあえずCGIは置いといて、まずファイルの入力の基本をググって調べればいいんじゃね



758 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:38:30 ]
以下、だろ。

759 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:47:34 ]
イカ=以下、がわからんじゃなくて
イカ=print <<・・、がどこから出て来たかわからん、ってことだよ

760 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:52:37 ]
続きでなんか書こうとしてるんじゃないの?

761 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:54:09 ]
>>759
以下のように、が、"<meta http-equiv="refresh" content="5; url=aaa.cgi">" を指してるんじゃないの?
大体、何を言わんとしてるかはわかる

762 名前:753 mailto:sage [2007/05/23(水) 14:56:30 ]
わかんないヤツが説明すると伝わりにくいですね
すみません・・・

えーっと
5秒おきにaaa.cgiにアクセスしてIEの画面に数字を順番に
表示させたいだけなんです

753で書いた方法で $line の数値を表示させるだけと言えば
伝わりますかね・・・



763 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:02:20 ]
webprogの所轄だが、行数をどこかに保存すればいいだけだろう?
CookieやURIのクエリ部分だとか、サーバ上のファイルとかメモリとか。

764 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:02:57 ]
とりあえずWebProg板いってこいな

765 名前:753 mailto:sage [2007/05/23(水) 15:05:13 ]
板違いでしたか すみません
どっちか悩んだあげくこっちに書いてしまいました

お邪魔しました

766 名前:764 mailto:sage [2007/05/23(水) 15:06:45 ]
大体、数万行のテキストデータだとしてもかなりの容量になるだろ
対象マシンのメモリ可哀想だな。 しかも、IEがそのデータを表示仕切る前に
IE落ちるだろうし、表示仕切る前に5秒経って更新かかるだろうな。
しかも、更新しようにもかなりの負荷がかかってるからモッサリ。

ブラウザクラッシャーでも作ろうとしてるのか?

767 名前:753 mailto:sage [2007/05/23(水) 15:10:09 ]
いえ 表示自体はその数万行のうち上から1行ずつでいいんです
1行目表示して5秒後には2行目・・・みたいな感じで。
順番に表示されるのを見て 手元のデータと比較していくだけの
単調な作業なんです



768 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:26:28 ]
表示した行数を覚えておく方法は>>763でほぼ答えが出てるけど、ファイルの指定行を読むところはTie::Fileとか使えば楽だと思うよ。

769 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:56:50 ]
ちょっ待って! さっきまで>>753が居た場所がイカ臭い

770 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 16:12:49 ]
753のやりたいことを考えると、サーバ上で処理させず、
数万行のデータを手元に持ってきてjavascriptで順次表示させた方が増しな気がする。
何行目を表示させているかも、少し離して表示させておけば、中断したときには手書きでメモれば十分だろう。
表示開始行数は引数で与えれば再開できるし。

771 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:25:55 ]
perlでいいじゃん

772 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:34:38 ]
"Black Perl"

BEFOREHAND: close door, each window & exit; wait until time.
open spellbook, study, read (scan, select, tell us);
write it, print the hex while each watches,
reverse its length, write again;
kill spiders, pop them, chop, split, kill them.
unlink arms, shift, wait & listen (listening, wait),
sort the flock (then, warn the "goats" & kill the "sheep");
kill them, dump qualms, shift moralities,
values aside, each one;
die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill the next sacrifice, each sacrifice,
wait, redo ritual until "all the spirits are pleased";
do it ("as they say").
do it(*everyone***must***participate***in***forbidden**s*e*x*).
return last victim; package body;
exit crypt (time, times & "half a time") & close it,
select (quickly) & warn your next victim;
AFTERWORDS: tell nobody.
wait, wait until time;
wait until next year, next decade;
sleep, sleep, die yourself,
die at last
# Larry Wall

これどういう意味?暇だったら訳してくれ

773 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:35:38 ]
Webサーバー(Webブラウザ)使うのが必要条件なのかにもよるな。
Excelでも十分かもしれん。

774 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:42:02 ]
local環境でいいんなら、1行読んで、25行ぐらい改行してからprintするだけじゃないの?
で、sleep(5)とか

775 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:14:28 ]
>>773
excel だけど win は一万行平気で開く?

cat -n hoge.log | more で十分だったりw

776 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:26:06 ]
>>772
ラクダ本3版Volume2に訳が出てるお

777 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:39:22 ]
>>774
本当はそんな感じ(と、行番号カウンタか)でいいんだと思うよ。
Web鯖に吐かせるべき理由があるんだかどーなんだか。



778 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:45:09 ]
webprog板でgrepとmapだとgrepの方が早いという意見があり確認してみました。
for >= grep > mapって感じみたいなのですがなんでmapだけこんなに遅いのでしょう?

■テストコード
use Benchmark qw/cmpthese/;
use strict;
use warnings;
my $LOOP = 100;
my @SEED = ('a'..'z','A'..'Z',0..9);
my @DATA = map {$SEED[int rand @SEED]} 1..10000;
my %TABLE = map {$_=>$SEED[int rand @SEED]} @SEED;
cmpthese($LOOP, {
#非破壊
'map1' => sub {my @hoge = map { $TABLE{$_} } @DATA; 1;},
'grep1' => sub {my @hoge;grep push(@hoge,$TABLE{$_}),@DATA;1;},
'for1' => sub {my @hoge;push(@hoge,$TABLE{$_}) for(@DATA);1;},
#破壊
'map2' => sub {map {$_=$TABLE{$_}} @DATA ;1;},
'grep2' => sub {grep $_=$TABLE{$_},@DATA;1;},
'for2' => sub {$_ = $TABLE{$_} for(@DATA);1;},
});


779 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:47:30 ]
■結果 1回目
Rate map1 map2 for1 grep1 grep2 for2
map1 25.8/s -- -14% -32% -33% -66% -69%
map2 30.1/s 17% -- -21% -22% -60% -64%
for1 38.0/s 48% 26% -- -2% -50% -54%
grep1 38.6/s 50% 28% 2% -- -49% -53%
grep2 75.8/s 194% 152% 99% 96% -- -8%
for2 82.6/s 221% 174% 117% 114% 9% --
■結果 2回目
Rate map1 map2 grep1 for1 grep2 for2
map1 24.6/s -- -16% -33% -33% -71% -71%
map2 29.2/s 19% -- -20% -21% -65% -66%
grep1 36.6/s 49% 26% -- -1% -56% -57%
for1 36.9/s 50% 27% 1% -- -56% -57%
grep2 83.3/s 239% 186% 127% 126% -- -3%
for2 85.5/s 248% 193% 133% 132% 3% --
■結果 3回目
Rate map1 map2 grep1 for1 grep2 for2
map1 23.3/s -- -17% -33% -37% -72% -73%
map2 27.9/s 20% -- -20% -25% -66% -67%
grep1 35.0/s 50% 25% -- -6% -57% -59%
for1 37.0/s 59% 33% 6% -- -55% -56%
grep2 82.0/s 252% 193% 134% 121% -- -3%
for2 84.7/s 264% 203% 142% 129% 3% --







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<220KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef