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
673 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:03:30 ] >>666 では、とっておきの電卓プログラムを紹介しようか。 C++で書くと、何十ステップも必要だろう。 while(<>){print eval($_)}
674 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:23:07 ] >>673 カレントディレクトリ以下のファイルがすべて消えました!><
675 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:43:53 ] >>672 きもい
676 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:50:56 ] それも計算によって実現してるからな
677 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:55:32 ] >>674 がマジなのか気になる。 >>673 をしたらキーボードからどんな文も実行できてしまうよな? >>674 を書いて実行してキーボード触らずにマウスで閉じたら何も起きないよな? 恐怖体験アンビリーバブー
678 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:56:20 ] ちょっと安価ミスしたが気にしないでくれorz
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 名前:8 [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でも十分かもしれん。