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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/31(火) 14:52:21
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

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

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

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

前スレ
Perlについての質問箱 27箱目
http://pc8.2ch.net/test/read.cgi/tech/1157874614/

リンク集は>>2-3
過去スレは>>4
05772332006/11/24(金) 19:20:42
>>576
ごめんなさい。
今>>570を読んでいる途中です。
0578デフォルトの名無しさん2006/11/24(金) 19:25:46
>>577
おk

my $number = [
{name=>'リンゴ',price=>100},
{name=>'本',price=>500},
{name=>'車',price=>100000},
];
my $item = [sort { $a->{'price'} <=> $b->{'price'} } @$number]->[0];
print $item->{'name'} , 'が' , $item->{'price'} , '円で一番安いです';
0579デフォルトの名無しさん2006/11/24(金) 19:31:42
hogeとかfooとかbarとかいう奴に容赦する必要は無いと思う。
05802332006/11/24(金) 19:37:49
>>578
読み終わりました。
こんなコードが良く思いつきますね。
たくさんレスを付けて頂いて、どうもありがとうございました。

>>579
背伸びしてごめんなさい。
0581デフォルトの名無しさん2006/11/24(金) 19:52:15
rubyとかpythonに乗り換えた方が幸せになれるんじゃないのかな
0582デフォルトの名無しさん2006/11/24(金) 19:54:01
>>581
どうして?
0583デフォルトの名無しさん2006/11/24(金) 20:05:31
配列の最大値・最小値を求める関数が最初からあるし、
ある要素が配列の何番目にあるかを求める関数もそろってる。
0584デフォルトの名無しさん2006/11/24(金) 20:07:35
へええ
0585デフォルトの名無しさん2006/11/24(金) 20:37:49
>>583
Perlみたいに

use List::Util;

とかやらなくても良いわけですね。
0586デフォルトの名無しさん2006/11/24(金) 21:48:27
perl std.pl > stdout.txt
こういう感じで標準エラー出力を変えることってできます?
0587デフォルトの名無しさん2006/11/24(金) 22:06:23
>>586 それはperlの使い方ではなくシステムだろ。スレ違いだ
0588デフォルトの名無しさん2006/11/25(土) 09:48:59
*STDERR = *STDOUT ;
突っ込めばとりあえず main の STDERR は STDOUT に全部流れるハズ。
そーじゃなくて、use warnings 時の warning を STDOUT に変更したい
ってんなら、
local $SIG{__WARN__} = sub { print STDOUT @_ } ;

が、586 の質問の仕方だと 587 の云う通り

======
前者の例
*STDERR = *STDOUT ;
print STDERR qq{hoge\n} ;
0589デフォルトの名無しさん2006/11/25(土) 11:23:20
フォルダ、ファイルのサイズ(使用容量)を返す関数ってありますか?
0590デフォルトの名無しさん2006/11/25(土) 12:39:08
>589
ファイルサイズなら stat か -s が使える。
フォルダはわからない。


ところで、配列の参照から配列長を知る方法を知りませんか?

$array_ref = \@hoge_array;
( $$#array_ref ?)
0591デフォルトの名無しさん2006/11/25(土) 13:41:15
@{$array_ref}
0592デフォルトの名無しさん2006/11/25(土) 14:35:20
$#array は配列長じゃなくて最後の添え字番号だと(ry
0593デフォルトの名無しさん2006/11/25(土) 21:52:20
$#$array_ref+1とか?
0594 ◆TWARamEjuA NGNG?BRZ(6677)
(´-`).。oO(だから>>591のをスカラーで評価すれば。。。scalar @{$array_ref})
05955902006/11/25(土) 22:06:37
> 591-593

ご回答ありがとうございます。
ようやく見苦しいソースから開放されます。
0596デフォルトの名無しさん2006/11/27(月) 01:59:19
>>583
つまんないね、そういうの。
0597デフォルトの名無しさん2006/11/27(月) 02:10:46
色んなグラフを表示するサイトを作ることになったんですが、
GDの使い方がよくわかりません。

勉強するのに、詳しくて具体例の豊富な書籍かサイトがあったら
教えていただけないでしょうか?

できれば日本語だと助かりますが、英文サイトでも構いません。
0598デフォルトの名無しさん2006/11/27(月) 02:13:08
ちょっと古いネタだけど

 ttp://blog.livedoor.jp/dankogai/archives/50696852.html

> それとも、編集部は何かPerlに含むところでもあるのだろうか。
> 編集部の猛省を求める。

いったい何様のつもりなんだろう?
0599デフォルトの名無しさん2006/11/27(月) 02:26:01
>>598
編集部の人おつかれさまです^^
0600デフォルトの名無しさん2006/11/27(月) 02:32:21
>>598
> いったい何様のつもりなんだろう?

編集部は別に偉くないよ。
0601デフォルトの名無しさん2006/11/27(月) 02:35:42
>>598
100歩譲って君に考えを合わせたところで、
自分の場所で自分の意見を書くのは責められないだろ。
0602デフォルトの名無しさん2006/11/27(月) 02:39:27
別に個人が猛省を求めるって書くことは自由かと・・・
0603デフォルトの名無しさん2006/11/27(月) 02:42:42
ここで個人の陰口を書いてる方がどうかと思う。子供っぽい。
文句があるなら本人に直接言えばいいし、言えないなら見なかった事にしとけばいいのに。
0604デフォルトの名無しさん2006/11/27(月) 02:45:01
>>596
> つまんないね、そういうの。

そんな低レベルなところに面白さを求めるのはダラクですっ!!

志は高く! 下を見るな、上を見ろ!!
0605デフォルトの名無しさん2006/11/27(月) 02:50:53
ったく、日経は
インサイダーするし、
とばし記事や風説の流布で株価は操作するし、
インタビュー記事では印象操作するし、
あげくのはてに>>598のような2ちゃんを使って自分達を批判するものを貶める工作活動かよ。

モラルが欠け、自浄作用も期待できない以上、さっさと潰れちまえ糞マスゴミ社
0606デフォルトの名無しさん2006/11/27(月) 02:58:55
>>605
>>598はどうかと思うが、君は終わってる。
0607デフォルトの名無しさん2006/11/27(月) 04:52:37
>>606 日経の人、乙
0608?????2006/11/27(月) 05:07:22
?????????? ???????? ??????????????? ?????????? ???? ?????C ???????? Java ?? ?????? ?????
0609デフォルトの名無しさん2006/11/27(月) 10:55:48
Perlを名前くらいしか知らない友人に説明を求められて、
「バッチファイルの凄いヤツ」って言っちゃったんだけど、大丈夫かな?

(ちなみにPHPはテンプレートの凄いやつと言った記憶があるが)
0610デフォルトの名無しさん2006/11/27(月) 10:59:41
perlは終わってるだろう。
他の新しいスクリプト言語使ったら戻る気にならない。
古いスクリプトの修正くらいしか使わないよ。
0611デフォルトの名無しさん2006/11/27(月) 11:06:26
>>610
何使ってるんだ?
pyson?Ruby?
0612デフォルトの名無しさん2006/11/27(月) 11:09:37
その議論は他でやれ
0613デフォルトの名無しさん2006/11/27(月) 12:52:17
RubyもPerlも使うけど、直感で書きなぐりのスクリプト
書くのはPerlのほうがいいな。

Rubyで書くときはPerlで書くよりも時間をかけれるときか
あとでもう一回使うばあいか大規模な場合。
0614デフォルトの名無しさん2006/11/27(月) 17:33:43
Perlはそれ自体がすばらしいというよりCなどと併用しやすいのが嬉しいな。(XSはアレだが...)

リファレンス⇔Cのポインタの理解がすごく容易だし、文法もCをふまえて拡張してあるから、
理解しやすいだけでなくそれぞれの知識が実際のコーディングの妨げにならない。
0615デフォルトの名無しさん2006/11/27(月) 17:38:45
古い言語のメリットが、さらに古い言語と併用しやすいことって、こりゃまた後ろ向きだな
0616デフォルトの名無しさん2006/11/27(月) 17:48:04
perl以外でまともなスクリプト言語って何がある?
0617デフォルトの名無しさん2006/11/27(月) 18:48:43
奇形スクリプト言語Perlが隆盛にも困ったもんだが
0618デフォルトの名無しさん2006/11/27(月) 20:29:01
ソフトウェア業界では
古い=枯れていてバグが少ない(エイジングテスト通過済み)
なので、ほめ言葉ですよね^^
0619デフォルトの名無しさん2006/11/27(月) 21:54:14
言語なんてただの道具だ。
もし要件満たせなくなれば捨てるだけのこと。
執着など無用だ。
0620デフォルトの名無しさん2006/11/27(月) 22:06:55
日本語捨てられますか?
簡単に言語を捨てられるなら、その程度のレベルだったという事。
0621デフォルトの名無しさん2006/11/27(月) 22:16:30
周りに話す人がいなくなれば
捨てるしかないな
0622デフォルトの名無しさん2006/11/27(月) 22:19:52
しかしまあ、知ってる言語がPerlだけと言う人を見ると、ゾッとするね。
0623デフォルトの名無しさん2006/11/27(月) 22:37:34
perlの文法って、良し悪しはともかく面白いと思うので、
なくなったら寂しいな。
0624デフォルトの名無しさん2006/11/27(月) 22:58:14
おもしろ言語
0625デフォルトの名無しさん2006/11/27(月) 23:23:47
>>620
ああ、こういう言語憶えるのが目的みたいな人も
いるよね。 まぁ、それはそれでいんじゃない。

いい電動ノコ使いこなしてても、もっといい
チェーンソーが出れば俺は簡単に乗り換えるよ。
電動ノコ名人になりたんじゃなく木を切りたいのでね。
チュンチュン… ハッハッ…
0626デフォルトの名無しさん2006/11/27(月) 23:38:58
↑流行に踊らされる人間の図
0627デフォルトの名無しさん2006/11/27(月) 23:52:47
ここは「質問箱」だっての


↓↓何事もなかったかのように質問者登場↓↓
0628デフォルトの名無しさん2006/11/28(火) 00:10:13
質問です。
0629デフォルトの名無しさん2006/11/28(火) 00:10:17
質問です。Rubyは使いづらい言語なのにどうして信者は偉そうなんですか?
頭がおかしいからですか?
0630デフォルトの名無しさん2006/11/28(火) 00:22:29
偉そうな信者はどこでもいるもんだ
0631デフォルトの名無しさん2006/11/28(火) 10:39:31
Perlにも信者はいる
っつーかこの議論は他スレでやれっつの
0632デフォルトの名無しさん2006/11/28(火) 10:50:01
どこのスレでやってほしいのか言ってくれ
0633デフォルトの名無しさん2006/11/28(火) 11:23:33
>>632

ここなんかどうだ?
http://pc8.2ch.net/test/read.cgi/tech/1162273941/l30
0634デフォルトの名無しさん2006/11/28(火) 11:29:59
>>623
なくなったらまた作ればいいじゃない。
0635デフォルトの名無しさん2006/11/28(火) 13:17:13
>>630
いえ、その数がゼロではないことを疑問に思っているのではなく、
Rubyコミュニティがあまりにも「そんなのだらけ」なのは何故だろうというのが
訊きたかったことです。
(Rubyの話題のようでいて、Rubyスレで訊いても意味がないことなので、
彼らに噛み付かれることの多いPerlのスレで訊いてみました)
0636デフォルトの名無しさん2006/11/28(火) 13:44:23
>>635
邪魔
0637デフォルトの名無しさん2006/11/28(火) 13:54:44
Ruby 信者は Perl に噛みつくが Perl 信者は Ruby に噛みつかない。
このことから言えることは、 Perl は心の広いおおらかな人が使って
いる言語と言えよう。逆に言えば、Perl は心が広くおおらかでないと
使えない言語ということだ。こうあるべきだと理想ばかりを追求し、
それから外れたらすぐにキーっとなって怒るような人には耐えられ
ないということだ。

もしつき合うなら Perl を使っている人とつき合いたいものだ。
0638デフォルトの名無しさん2006/11/28(火) 14:16:27
perlを使ってる人は、負ける議論はやらないだけだ
0639デフォルトの名無しさん2006/11/28(火) 14:32:29
Ruby信者はあまりにも盲信がひどくて、
負ける議論ばかり始めるからな。
0640デフォルトの名無しさん2006/11/28(火) 17:18:28
Perlはへたうま言語って感じ。
0641デフォルトの名無しさん2006/11/28(火) 17:19:09
>>637
それPHP信者でもよくあるんだけどPerl使いはPHPやRubyも触っている事が多い
ので他の言語に噛みつかないと勝手に推測している。
おおらかというかじいちゃんみたいな印象がするかな。
2chで言語比較議論になった時のPerlerの交わしテクを見てるとウケる。
0642デフォルトの名無しさん2006/11/28(火) 17:25:38
Rubyコミュニティは、Perl4時代のPerlコミュニティを彷彿とさせる。
0643デフォルトの名無しさん2006/11/28(火) 18:58:41
質問です。
パケットキャプチャツール(tcpdump)からの出力を受け取って、
その出力結果をリアルタイムに、その場で加工することが行いたいです。

open(TCPDUMP, "tcpdump |");
while(1){
while(<TCPDUMP>){

#処理

}
}

現在は上記で処理しているのですが、どうしても処理が遅くなります。
なので、tcpdumpから入力があった際に処理を行う事にしたいのです。
初歩的質問で申し訳ないのですが、宜しく御願い致します。
06446432006/11/28(火) 19:50:39
今の状態で納得いかない点ですが、入力、出力がリアルタイムに行われず、
バッファに溜まったかのような状態になります。
入力があったら即認識し、処理、出力をしたいです。
0645デフォルトの名無しさん2006/11/28(火) 19:59:42
>>644
っ[tcpdumpのマニュアル]
06466432006/11/28(火) 20:07:45
パイプのバッファが原因なようなので、スレチになってしまう話題のようです。
すみません、有難う御座いました。
0647デフォルトの名無しさん2006/11/29(水) 17:06:36
>>641
うーん。PHP は最初は Perl で作った CGI だったのにな。
まあいいか。
0648デフォルトの名無しさん2006/11/30(木) 02:12:58
>>647
kwsk

というか、php,Perl で検索したら
WEBプログラミングは、PHP/Perl派と、Java派に二分されるとかいう
ブログを見つけてシマタヨ。
http://www.milkstand.net/fsgarage/archives/000803.html

Perl で簡単おきらくごくらくにスクリプト書いていた漏れは
Java 派にケーベツされる訳?! と思ってシマタヨ。

まあ、漏れの本業はWEBプログラミングじゃあなく、、
Perlスクリプトは本業を効率化する為の道具にすぎんので、
Java派にケーベツされようが何しようがいいんだが。
0649デフォルトの名無しさん2006/11/30(木) 07:27:19
誰かError.pmの独自例外クラスを作る方法を教えていただけませんか?
資料がなくて困っております。
0650デフォルトの名無しさん2006/11/30(木) 22:08:39
>>649
他人のコードを読めるなら、Sledgeで使ってるから(Sledge::Exception)読んでみたら?
0651デフォルトの名無しさん2006/11/30(木) 22:41:18
てか Error::Simple を use base してサブクラス作ればいいだけじゃん
0652デフォルトの名無しさん2006/11/30(木) 23:43:17
CPANで入れたモジュールを全部消すにはどうすれば良いでしょうか?
初期化でも構いません。
0653デフォルトの名無しさん2006/11/30(木) 23:51:43
o conf initで出来るみたいですね。事故解決しました。
0654デフォルトの名無しさん2006/12/01(金) 13:33:04
>>648
http://www.phpoo.net/index.php?p=history.html#history.php
PHPの歴史
PHP/FI

PHPはPHP/FIというソフトウェアを継承したものです。PHP/FI は1995年に
Rasmus Lerdorfによって作成されました。当初は オンラインに置いてある
彼のレジュメへのアクセスを解析するための Perlスクリプトの単純な組み
合わせでした。彼はこのスクリプト に 'Personal Home Page Tools' と
いう名前を付けました。 さらに多くの機能が要求されるようになると、
Rasmusはデータ ベースとの連携や、簡単な動的ウェブアプリケーションを
作成 できるようなものをC言語で書き直しました。
0655デフォルトの名無しさん2006/12/01(金) 15:22:09
>>648
>>まあ、漏れの本業はWEBプログラミングじゃあなく、、
>>Perlスクリプトは本業を効率化する為の道具にすぎんので、

同じく。
鯖缶なので保守用のスクリプトをメインで書いとるよ。
けど、世間ではブラウザで管理するのが流れなのでWeb用も書かないとダメになってきてる。
0656デフォルトの名無しさん2006/12/01(金) 18:04:29
職業に鯖缶とかスクリプト書いてる人ってどういうことをしているの?
俺のちんけな頭じゃHP、商品売買ぐらいしか思いつかないので
需要があると思わないのだが、この板を見ていると本業にしている
人がちらほら見受けられるので興味がある。

教えてちょ。
0657デフォルトの名無しさん2006/12/01(金) 19:18:46
需要あるところにビジネスの道あり

         〜武田信玄 風林火山より〜
0658デフォルトの名無しさん2006/12/01(金) 19:37:28
鯖缶ならアクセスログ解析、ユーザー管理
バックアップ、ドキュメント管理
とかとか色々考えつくけど。
0659デフォルトの名無しさん2006/12/02(土) 03:12:31
IDCで喉カラカラになりながら地べたに座って作業してる奴だろ
0660デフォルトの名無しさん2006/12/02(土) 14:53:41
ruby, sed, C++など他の言語を知っている人が
てっとり早くperlを学ぶために最初に読むといい
チュートリアルとか本はありますか?
0661デフォルトの名無しさん2006/12/02(土) 15:20:32
>>660
フリーで配付してる掲示板とかのソース。
0662デフォルトの名無しさん2006/12/02(土) 15:40:04
>660
perldoc

フリーで配布してるのもいいけど、KE○Tは駄目。
そんなの読む暇があったらCPAN漁ったほうが楽しいし役に立つよ。
0663デフォルトの名無しさん2006/12/02(土) 16:38:20
>>662を見て久しぶりに彼のサイト行ってみたが、今も盛況なんだねえ。
・・・でも置いてあるソースまで昔のままの出来なのな。
他の言語を知ってる人間は、恐らく言語のディテールにウェイトを置いて読むだろうから、
2種類のクオートがまったく意味不明な思想で使い分けられてる点とか、
そういうつまらない粗雑さに引っかかって、無用な足踏みをしちゃいそうな気がする。
確かに彼のソースは読むべきではない。
0664デフォルトの名無しさん2006/12/02(土) 16:40:06
>>660
UNIX/Linuxの知識があれば、最近出た"Minimal Perl"という本がお勧め。
題名通り、最低限の努力で、すでに知っている知識を活かしながら
perlを学習できる。
0665デフォルトの名無しさん2006/12/02(土) 16:51:48
>>660
> ruby, sed, C++など他の言語を知っている人が
> てっとり早くperlを学ぶために最初に読むといい
> チュートリアルとか本はありますか?

『PerlユーザーのためのRuby入門』……あ、逆か。
06666602006/12/02(土) 20:32:38
いろいろありがとうございます。

>>Minimal Perl
洋書よむ気力はないです。

>>『PerlユーザーのためのRuby入門』……あ、逆か。
いい本だったら逆でも役にたつと思うんですが、amazonレビューの
評価が低いですね…

要所だけを押さえた覚え書きみたいのがあればよかったんですが、
とりあえずそこらのチュートリアルやソースをあさって読む
ことにします。
0667デフォルトの名無しさん2006/12/02(土) 21:16:56
>>660 殿

ミスティーネットはどうよ、
Cプログラマの漏れが見様見真似で Perl スクリプトを組み始めたときから愛用している
Perlサイトだ。
http://perl.misty.ne.jp/

関数リファレンスはなかなか秀逸だ
但し、モジュールの使いこなしやら ppm や CPAN モジュールは
ここからもう一歩踏み込まんといかんなあ。
0668デフォルトの名無しさん2006/12/02(土) 22:13:31
perldoc読むのが一番
0669 ◆TWARamEjuA 2006/12/02(土) 22:16:37
ぐだぐだ宣う前にperlstyleなり読んでみろよと叫びたい。
ようするにヘタレ君?
0670デフォルトの名無しさん2006/12/02(土) 23:50:57
ラクダ本から入ったなー。パラパラ読んだり、じっくり読んだり、調べ物したり。今でも役に立つ。
0671デフォルトの名無しさん2006/12/03(日) 01:16:04
古い人が陥りがちな思考の罠に、崖の高さが日々高くなっていることに
対する認識不足がある。

10年前、その崖の高さは3メートルだった。ジャンプすれば上によじ登ることが
できたのである。
しかし崖は日々高くなり続けた。早くから昇り始めた人は、ときどき崖が
すこし高くなっていることに気づくと、高くなった分30センチひょいと
登るというのを数多く重ね、崖の上やその上部に留まりつづけている。

だがふもとから見てみよう。崖の高さは今や20メートルに達している。

初心者がふもとから叫んでいる。
「どうやって登ったんですか〜!」

これに
「跳び上がったら上に手が届いたよ〜!」

と叫び返してはいけないのである。
0672デフォルトの名無しさん2006/12/03(日) 01:38:08
>>671

>>660の「知ってる」の解釈が
名前を知っているだけなのか、きっちり使いこなしているレベルの知っているのかで
扱いがかなり違うんだよね。

ぶっちゃけ後者なら、2ちゃんで聞くまでもなく自分でtarボールの付属ドキュメントを読んで
すぐにperldocを使って文法やコーディングスタイルよんだりCPANを覚えて
いろいろモジュールをDLして使い方覚えたり、ソースを呼んでコーディングテクニックを身につけたりしてるはず。
0673デフォルトの名無しさん2006/12/03(日) 02:17:45
>670
ラクダ本から入るのはちょっときつくないかな。ま、本格的にやろうと思ったらあれは必須の本だけど。
RubyだとかC++使いこなしてるレベルならいきなりいっても大丈夫か。
あとはPerlクックブックとPerl Best Practicesは必読だな。それだけ読めばあとはもうそれこそCPANのを
片っ端から読んで行くのが一番早いか。
0674デフォルトの名無しさん2006/12/03(日) 02:27:45
他の言語の経験があるならなおのこと、リャマをなぞってチュートるだけでも通り一遍はこなせるようになるでしょう。
もちろん長く深く使い倒したいならラクダが揃ってた方が圧倒的に便利なのは確か。他の物はそれからでもいいよん。
0675デフォルトの名無しさん2006/12/03(日) 02:31:21
>>671
俺自身はラクダ本の第2版を買って勉強しはじめたんだが、
今の初心者にいきなり「第3版上下とも買え」っていうのはちょっと酷な気がする
0676デフォルトの名無しさん2006/12/03(日) 03:57:42
ラクダ本第三版上下でPerlに入門したオレがきましたよっと。言うほどキツくなくて、結構すんなり読めました。
文体が独特で最初はとまどったけど、慣れると逆に明解でわかりやすいって思ったなぁ。
網羅的だから、一通り読むと、他の人のソースとかCPANモジュールとかが大体読めるようになってて驚いた。
あと、細かい所まで書いてあるから、細かい疑問の答えも大体載ってて、ありがたい。

でも、やっぱりプログラミング自体初めてっていう人にはキツいと思う。
■ このスレッドは過去ログ倉庫に格納されています