1 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:22 ] "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 (WEBプログラミング板 ttp://pc11.2ch.net/php/ ) CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 ttp://www.perl.org/get.html ● 2008/01/11現在の最新版: 5.10.0 ● 2007/01/11現在の開発版: 5.9.5 前スレ Perlについての質問箱 33箱目 pc11.2ch.net/test/read.cgi/tech/1192463997/ リンク集は>>2-3 過去スレは>>4 あたり
2 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:47 ] [プログラミング自体の経験が無い奴はまずココを読め] Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/ [本] リャマ: ttp://www.oreilly.co.jp/books/4873111269/ 駱駝: ttp://www.oreilly.co.jp/books/4873110963/ Effective Perl: ttp://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html クックブック: ttp://www.oreilly.co.jp/books/4873112028/ Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/ Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/ [オンラインマニュアル] (追加) 最新のドキュメント: ttp://search.cpan.org/dist/perl/ perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/ perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/ 日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi perldoc.jp: ttp://www.perldoc.jp/ Perldoc.com: ttp://www.perldoc.com/
3 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:08:12 ] [モジュール] CPAN.com: ttp://search.cpan.org/ 河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/ [テクニック] Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/ Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm [Perl5.8 Unicodeメモ] ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
4 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:08:28 ] >>1 乙
5 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:09:06 ] [過去スレ1] 1 ttp://pc.2ch.net/tech/kako/1017/10177/1017736187.html 2 ttp://pc3.2ch.net/tech/kako/1033/10336/1033688230.html 3 ttp://pc2.2ch.net/tech/kako/1041/10412/1041205885.html 4 ttp://pc2.2ch.net/tech/kako/1048/10485/1048519394.html 5 ttp://pc5.2ch.net/tech/kako/1053/10530/1053053082.html 6 ttp://pc5.2ch.net/tech/kako/1060/10606/1060689008.html 7 ttp://pc2.2ch.net/test/read.cgi/tech/1068051036/ 8 ttp://pc2.2ch.net/test/read.cgi/tech/1074151549/ 9 ttp://pc5.2ch.net/test/read.cgi/tech/1079114157/ 10 ttp://pc5.2ch.net/test/read.cgi/tech/1085564875/ 11 ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/ 12 ttp://pc5.2ch.net/test/read.cgi/tech/1094579428/ 13 ttp://pc5.2ch.net/test/read.cgi/tech/1097851764/ 14 ttp://pc5.2ch.net/test/read.cgi/tech/1101649274/ 15 ttp://pc5.2ch.net/test/read.cgi/tech/1105953092/ 16 ttp://pc8.2ch.net/test/read.cgi/tech/1111034732/ 17 ttp://pc8.2ch.net/test/read.cgi/tech/1117870308/ 18 ttp://pc8.2ch.net/test/read.cgi/tech/1121804136/ 19 ttp://pc8.2ch.net/test/read.cgi/tech/1126977805/
6 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:09:38 ] [過去スレ2] 20 ttp://pc8.2ch.net/test/read.cgi/tech/1131286411/ 21 ttp://pc8.2ch.net/test/read.cgi/tech/1134327348/ 22 ttp://pc8.2ch.net/test/read.cgi/tech/1138519327/ 23 ttp://pc8.2ch.net/test/read.cgi/tech/1141742901/ 24 ttp://pc8.2ch.net/test/read.cgi/tech/1146022352/ 25 ttp://pc8.2ch.net/test/read.cgi/tech/1149259409/ 26 ttp://pc8.2ch.net/test/read.cgi/tech/1153412251/ 27 ttp://pc8.2ch.net/test/read.cgi/tech/1157874614/ 28 ttp://pc8.2ch.net/test/read.cgi/tech/1162273941/ 29 ttp://pc11.2ch.net/test/read.cgi/tech/1166708139/ 30 ttp://pc11.2ch.net/test/read.cgi/tech/1173880452/ 31 ttp://pc11.2ch.net/test/read.cgi/tech/1181500187/ 32 ttp://pc11.2ch.net/test/read.cgi/tech/1186995713/ 33 ttp://pc11.2ch.net/test/read.cgi/tech/1192463997/
7 名前:デフォルトの名無しさん [2008/01/11(金) 14:30:54 ] 基本中の基本で申し訳ない。 リストを集合と見なして、和、積などの演算を提供するモジュールでポピュラーなのあったっけ?
8 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 16:28:17 ] Set::Array
9 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 00:24:18 ] CGI::Lite にある、url_encode 相当の関数って、 CGI.pm には入ってないので、自前でやるしかない。 で、あってる? escapeHTML ってのはあるんだけどなぁ。 (= CGI::Lite で言うところの、browser_escape)
10 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 02:47:40 ] >>9 use URI::Escape じゃあ、いかんのかね?
11 名前: ◆TWARamEjuA mailto:sage [2008/01/12(土) 22:00:08 BE:3485748-2BP(6825)] 日本語Cookieのエンコードに助かりました。。>> URI::Escape
12 名前:デフォルトの名無しさん [2008/01/12(土) 22:32:26 ] パールのオブジェクト指向ってどうなのよ?
13 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 22:46:33 ] 使う方はそれほどでもないが、書くのは結構めどい
14 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 23:23:55 ] >>13 そか? むしろOOってこんなに簡単だったんだ、とオモタが。 [Hoge.pm] package Hoge; sub new { my $class = shift; return bless({@_}, $class); } sub fuga { my ($self, $world) = @_; print "$self->{hello}, $world\n"; } 1; [hoge.pl] use Hoge; my $h = new Hoge(hello => "HELLO"); $h->fuga("WORLD");
15 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 23:34:11 ] Perl使いからすれば、な。 他のOOPLを先にやっちゃった人だと、ちと辛くなる。 何かOOPL自体を実装してる気分になる。
16 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 23:57:02 ] >>12 病的
17 名前:デフォルトの名無しさん [2008/01/13(日) 02:18:45 ] 構造体の要素をprintで表示させたいのですがどのようにしたらよいでしょうか? struct Person => { name => '$', son => '@', doughter => '@' }; $person[$i] = Cell->new(); $person[$i]->son($j, 'taroh'); $person[$i]->doughter($k, 'hanako'); みたいにたくさんの人がいて、 人によって息子と娘の数は違います。 下の書き方だと表示できません。よろしくお願いします。 for ($i = 0; $i <= $#person; $i++){ print $person[$i]->name; print ' son: '; for ($j = 0; $j <= $#{$person[$i]->son($j)}; $j++){ ←この行でダメと怒られる print $person[$i]->son($j); } print ' doughter: '; for ($j = 0; $j <= $#{$person[$i]->doughter($j)}; $j++){ print $person[$i]->doughter($j); } printf "\n"; }
18 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 08:24:31 ] またデバッグしないエラー隠蔽者か。
19 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 11:00:49 ] >>17 まずは、ソースの頭にこの二行を追加してください。 あとは、ガイダンスに従ってプログラムを修正してください。 use string; use warning;
20 名前:17 mailto:sage [2008/01/13(日) 17:18:11 ] for ($j = 0; $j <= $#{$person[$i]->son($j)}; $j++){ ←この行でダメと怒られる ↓ for ($j = 0; $j <= $#{$person[$i]->son; $j++){ で解決しました。 use string; を入れると、グローバル変数に文句を言われて、my を使ってみると $person[$i] がなぜかできなくなるので使ってないです。 ~~~
21 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:53:45 ] 落書き程度のプログラムならいいけど、 ちゃんとしたのを書くときはstrictとwarningプラグマをつけて書くようにしたほうがいいよ。 何かエラーが出るなら、コードにバグなりバグの原因が潜んでるってことだから。
22 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:33:26 ] ひえええ(悲鳴)
23 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 19:26:24 ] forでmyを使えばいいし、 そもそもPerlではforeachにしたほうがいい strictとwarningsは 必 須
24 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 19:35:12 ] foreach my $i (0 .. $#person)
25 名前:17 mailto:sage [2008/01/13(日) 19:47:54 ] >21-24 すみません。strict と warnings は使うようにします。foreach にもします。 >$person[$i] がなぜかできなくなるので使ってないです。 については、 my $person[$i] = Person->new(); ↓ my @person = Person->new(); にしたらローカル変数使えました。どうもありがとうございました。
26 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:21:49 ] for (my $i = 0; ......
27 名前: ◆TWARamEjuA mailto:sage [2008/01/13(日) 21:57:44 BE:3811875-2BP(6825)] そもそも$i,$jが必要なのかなぁと思ったり。。。
28 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:36:13 ] 個人の力量に応じて色々書けるところがPerlのいいところなのに マイルール押し付けすぎじゃね?
29 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:38:32 ] 力がないからこそエラーチェック機構に頼るべきだろう
30 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:18:12 ] warningsは必ずしも使わないな。 あまり教条主義的になるのもよくない
31 名前:デフォルトの名無しさん [2008/01/13(日) 23:40:27 ] ここの人はPerlでプログラムをバリバリに書くの? そこそこに大きくなりそうな時は、やっぱCにしようって思わない?
32 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:41:31 ] >>17 がアホなエラーを出してるからだろ。
33 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 02:10:03 ] >31 Perlで書かなければならないときはPerlで書くし、 Cで書かなければならない時はCで書く。
34 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 03:00:33 ] サンプルを作るのはPerlで、 速さが必要なときは、特定部分だけCにしてる
35 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 04:53:03 ] >>30 それは分かってて使わないってことだろ? 上のは使うことすら知らなかったわけだから
36 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 05:20:23 ] 環境によっては使えない、なんてことも。
37 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 11:29:21 ] そもそもPerlかCなんて、そんなに選択範囲小さくないです
38 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 13:22:36 ] 最近、PerlとRubyとElispで組み合わさって動くものばかり書いている。 PerlとRubyくらいまとめたい。
39 名前:デフォルトの名無しさん [2008/01/14(月) 16:39:51 ] 少しプログラムで詰まりました。 ローカルサーバー上では $i = rindex($add,"\\"); という入力をすることでうまく行きますが 借りてるサーバに上げる場合は $i = rindex($add,"/"); と改変しなければ動かないプログラムがありまして、 出来れば、ローカルと借りてるサーバ両方でうまく処理が行くようにしたいのですけど、 いい方法ないでしょうか?
40 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:56:40 ] 多分パスのセパレータの違いが出てるんだろうけど・・ \か/に正規化すれば?もしくはシステムが使ってるパスのセパレータを取得してそれを使う $add =~tr/\\/\//; $i = rindex($add, "/");
41 名前:デフォルトの名無しさん [2008/01/14(月) 16:58:36 ] >>40 なるほど ありがとうございます
42 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:31:29 ] File::Spec
43 名前:デフォルトの名無しさん [2008/01/14(月) 18:33:59 ] CPANがエラーで動きません。どうすればよいのでしょうか? やったこと ・相手のサーバーがダウンしてるのかと数箇所、変更しましたが変わらず ・数個のモジュールを試すが全部、同じエラー ------------------------------------------- Fetching with LWP: ftp://***************** LWP failed with code[500] message[Errno architecture (i386-linux-thread-multi-2.4.21-27.0.2.elsmp) does not match executable architecture (i386-linux-thread-multi-2.6.9-34.elsmp) at /usr/lib/perl5/site_perl/5.8.6/Errno.pm line 11. Compilation failed in require at /usr/lib/perl5/5.8.6/i386-linux-thread-multi/IO/Socket.pm line 17. BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.6/i386-linux-thread-multi/IO/Socket.pm line 17. Compilation failed in require at /usr/lib/perl5/5.8.6/Net/FTP.pm line 18. BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.6/Net/FTP.pm line 18. Compilation failed in require at /usr/lib/perl5/site_perl/5.8.6/LWP/Protocol/ftp.pm line 24. ] Fetching with Net::FTP: ftp://***************** Can't locate object method "new" via package "Net::FTP" at /usr/lib/perl5/5.8.6/CPAN.pm line 2251.
44 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 20:27:57 ] >>43 > CPANがエラーで動きません。どうすればよいのでしょうか? エラーを解消する。
45 名前:デフォルトの名無しさん [2008/01/14(月) 22:22:58 ] Perl/Tkってどうよ?
46 名前:43 [2008/01/15(火) 08:40:40 ] エラーの原因が特定できないんです。わかる方いますでしょうか?
47 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 10:17:06 ] Can't locate object method "new" via package "Net::FTP"
48 名前:43 mailto:sage [2008/01/15(火) 10:24:27 ] Net::FTPがないってことで cpan>install Net::FTP でもエラーが出ますし,,,,
49 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 10:53:25 ] CPAN使わないで入れろよ・・・
50 名前:43 mailto:sage [2008/01/15(火) 12:01:41 ] ( ̄◇ ̄;)エッ yum? どこかに解説ありますでしょうか??
51 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:09:26 ] >>48 > Net::FTPがないってことで > cpan>install Net::FTP > でもエラーが出ますし,,,, 誰にそんなデタラメ吹き込まれたの?
52 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:12:14 ] 問題はこれじゃねの > LWP failed with code[500] message[Errno architecture (i386-linux-thread-multi-2.4.21-27.0.2.elsmp) does not match executable architecture (i386-linux-thread-multi-2.6.9-34.elsmp) at /usr/lib/perl5/site_perl/5.8.6/Errno.pm line 11.
53 名前:43 mailto:sage [2008/01/15(火) 13:14:31 ] cpan> install Net::FTP CPAN: Storable loaded ok Going to read /root/.cpan/Metadata Database was generated on Thu, 10 Jan 2008 22:37:46 GMT CPAN: LWP::UserAgent loaded ok Fetching with LWP: ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz LWP failed with code[500] message[Errno architecture (i386-linux-thread-multi-2.4.21-27.0.2.elsmp) does not match executable architecture (i386-linux-thread-multi-2.6.9-34.elsmp) at /usr/lib/perl5/site_perl/5.8.6/Errno.pm line 11. Compilation failed in require at /usr/lib/perl5/5.8.6/i386-linux-thread-multi/IO/Socket.pm line 17. BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.6/i386-linux-thread-multi/IO/Socket.pm line 17. Compilation failed in require at /usr/lib/perl5/5.8.6/Net/FTP.pm line 18. BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.6/Net/FTP.pm line 18. Compilation failed in require at /usr/lib/perl5/site_perl/5.8.6/LWP/Protocol/ftp.pm line 24. ] Fetching with Net::FTP: ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz Can't locate object method "new" via package "Net::FTP" at /usr/lib/perl5/5.8.6/CPAN.pm line 2251.
54 名前:43 mailto:sage [2008/01/15(火) 13:15:38 ] >>52 サン それっとド〜すれば... (o*。_。)oペコッ
55 名前:43 mailto:sage [2008/01/15(火) 13:33:54 ] 52さんのヒントから... rm -f /usr/lib/perl5/site_perl/5.8.6/Errno.pm で、削除して成功しました。 よくわかりませんが...下記を参考にしました ttp://www.nilab.info/zurazure2/000806.html ttp://cyberlib.enterbrainz.com/1182508727.html
56 名前:デフォルトの名無しさん [2008/01/15(火) 15:56:02 ] ひどすぎる……「車のバックミラーが壊れかけてプラプラしているので 引きちぎって捨てました」的解決。
57 名前:デフォルトの名無しさん [2008/01/15(火) 15:59:14 ] >>54 お前の環境もお前が使っているLinuxディストリビューションの パッケージシステムの管理体制も知らんからわからん。 エラーメッセージで示されているファイル群を見れば何が起きているかわかるだろ。
58 名前:43 mailto:sage [2008/01/15(火) 21:38:15 ] そんなの関係ねぇ! そんなの関係ねぇ! ○∧〃 / > < \
59 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 02:13:39 ] Foo/Const.pmに存在する Foo::Const;というパッケージから Const以下をMainにExportし Const::〜 というアクセス方法を提供するにはどのようにしたら良いでしょうか?
60 名前:本物の43 mailto:sage [2008/01/16(水) 12:49:10 ] >>58 は、私じゃないです
61 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 18:38:57 ] require で複数のサブルーチンを取り込みたいんですが、 require 'subroutin1.pl'; require 'subroutin2.pl'; と書くとうまくいきません。 両方とも読み込む方法はないでしょうか?
62 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 18:49:16 ] >>61 二つのファイルの最後に1;は書いた?
63 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 18:58:35 ] 「うまくいきません」(笑)
64 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 00:29:25 ] エスパーの出番だ。
65 名前:デフォルトの名無しさん [2008/01/17(木) 01:30:06 ] なんか今朝から具合が悪いです。 いい薬はありませんか?
66 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 02:17:45 ] >>65 life9.2ch.net/utu/
67 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:35:36 ] >>61 取り合えず、下記を使え。 強い味方になるぞ KCatch.pm/CGI エラーメッセージをブラウザに表示 www.kawa.net/works/perl/catch/news.html
68 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:00:38 ] >>61 >>67 普通に use CGI::Carp qw(fatalsToBrowswr); を書いておけば良いのと違うの?
69 名前:デフォルトの名無しさん [2008/01/17(木) 22:26:42 ] 変数に読み込んだzipファイルを展開したいんですが、どうすればよいでしょうか。 Compress::Zlib::memGunzip()を試しましたが、zipのためかうまくいきませんでした。 (undefが返る) すみませんが、お知恵を貸してください。
70 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:45:49 ] Archive::Zip
71 名前:69 mailto:sage [2008/01/17(木) 23:06:41 ] >70 Archive::Zipでできますか? use IO::Uncompress::Unzip qw(unzip $UnzipError) ; とりあえずこれで解決できそうです。 なぜか2chで聞くと自己解決につながる不思議! Archive:;Zipもみてみますね。どうもありがとう
72 名前:デフォルトの名無しさん [2008/01/17(木) 23:14:42 ] >>69 日本語でおk? 変数に入ってるのは、zipファイルのファイル名 "なんとか.zip" が入ってるの? それとも、メモリー中で圧縮された状態のデータそのものが入ってるの? 圧縮されたファイルを解凍したいだけなら、 google で 「perl zip 解凍」 を検索すれば参考になるコードがみつかるよ。
73 名前:69 mailto:sage [2008/01/17(木) 23:19:54 ] 変数に入っているのは、zipデータのバイナリそのものです。 ファイル名やファイルハンドルではありません。
74 名前:デフォルトの名無しさん [2008/01/18(金) 10:35:27 ] yusukebe.com/tech/archives/20070803/124356.html これ動かないんですがどうすればいいんですか?
75 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 13:17:22 ] >>74 なぜ動かないのかをつきとめて、そこを動くように修正すると良い。
76 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 14:32:22 ] ニコの仕様が変わったからじゃね? 使ったこと無いけどWWW::NicoVideoっつーのがCPANにあるから見てみれば あとPlaggerにもぷらぎんあるかあr
77 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:33:05 ] いまいち頭の中でまとまってないけどuse strictを使い cのヘッダファイルのように変数を一元管理するにはどうしたらいい? 例 ##hoge.pl use strict $hoge = 'hoge'; print $hoge; require 'piyo.pl'; print $hoge; ##piyo.pl $hoge='piyo'; use strictコメントアウト時はhogepiyoだけど Global symbol "$hoge" requires explicit package name at ./strict.pl line 3. Global symbol "$hoge" requires explicit package name at ./strict.pl line 4. Global symbol "$hoge" requires explicit package name at ./strict.pl line 6. Execution of ./strict.pl aborted due to compilation errors. と怒られるorz
78 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:43:02 ] @argv = ( 1 .. 5); @argv[1] = ( 1 ..5); なデータがあるんですけど、 @argv[1]のリストの数を調べたいときは、どうするんですかね? $#argv[1]とすると、syntx errorになります。
79 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:05:46 ] それ以前の部分で理解が足りてないと思う
80 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:19:28 ] >>78 > @argv[1] = ( 1 ..5); これはどういう意味だ? ($argv[1]) = (1 .. 5) と等価か?
81 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:33:56 ] どういう意味も何も無いだろ・・・
82 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:26:00 ] 配列の要素にリストを代入したい ←無理 配列を表すらしい@を付ければできるんじゃね? つーところかと
83 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:46:32 ] ケチらずにリャマ本ぐらい読んでもよさそうなものだという気もするが。
84 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:36:29 ] 配列の要素に、"a b"のようなスペースを挟んでいるものがあります。 これをスペースでsplitして2次元配列にしたいのですが、 そのようなことはできませんか?
85 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:41:25 ] できるよ がんばれ
86 名前:74 mailto:sage [2008/01/18(金) 18:58:10 ] 自己解決 Crypt::SSLeay入れたら動きました
87 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:24:02 ] if文使うときif($a eq "a" or $a eq "b")みたいに同じ変数の中身を判定する部分をまとめる(/a|b/)みたいにする方法ってあります?
88 名前: ◆TWARamEjuA mailto:sage [2008/01/18(金) 20:10:12 BE:7841489-2BP(6825)] $a =~ m(^[ab]$)
89 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:11:10 ] >>87 あるけど、初心者はやるな。
90 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:18:43 ] >>87 if ($a =~ m/^(a|b)$/) if (grep { $a eq $_ } qw(a b)) : 好きなように書け
91 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:21:36 ] 確か[]より|のが速い
92 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:40:04 ] そんなはずがないだろうと思ってベンチ取ったが、やはりそんなはずはなかった。 use strict; use Benchmark; timethese(2000000, { Alternation => sub{ my $x = "abcdefghijk"; my $y = $x =~ /(?:d|e|f)/ }, CharacterClass => sub{ my $x = "abcdefghijk"; my $y = $x =~ /[def]/ }, }); >> Benchmark: timing 2000000 iterations of Alternation, CharacterClass... >> Alternation: 3 wallclock secs ( 2.45 usr + 0.00 sys = 2.45 CPU) @ 815328.17/s (n=2000000) >> CharacterClass: 1 wallclock secs ( 1.41 usr + 0.00 sys = 1.41 CPU) @ 1422475.11/s (n=2000000)
93 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:58:31 ] >>77 相反する(しかも管理しづらそうな)ことをする理由は分からないけど、 エラーメッセージの通りパッケージ名を付けるだけで怒られないようにはできる use strict; $main::hoge = "hoge"; print $main::hoge;
94 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 06:20:50 ] >>93 相反するってのは例が悪かったって事で勘弁を。>>77 の例でいうと$hogeはhoge.plでは変更しない。 #hoge.pl use strict; my($hoge); $hoge='hoge'; require 'piyo.pl'; print $piyo; #piyo.pl $piyo='piyo' でhoge.plを実行すると Global symbol "$piyo" requires explicit package name と怒られる。 #piyo.pl package piyo を追加して #hoge.pl print $piyo::piyo; とすれば怒られないけど hoge.pl内$piyoですます方法ないのかな?
95 名前:77 mailto:sage [2008/01/19(土) 14:49:54 ] 77だが解決した。 #hoge.pl use strict; our($piyo); require 'piyo.pl'; print $piyo; #piyo.pl $piyo='piyo'
96 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:08:53 ] 11 12 13 14 15 16 のように、1行に2つのデータを持ったファイルがあります。 これを、 list[0][0] = 11; list[0][1] = 12; list[1][0] = 13; list[1][1] = 14; list[2][0] = 15; list[2][1] = 16; のように二次元配列にしたいのですが、どのようにすれば良いのでしょうか?
97 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:30:36 ] my @list; push @list, [map int, split] while(<DATA>); __DATA__ 11 12 13 14 15 16
98 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:44:26 ] >>97 ありがとうございます。 コードを説明して頂けませんか?
99 名前:デフォルトの名無しさん [2008/01/20(日) 01:06:20 ] ↑ 本を読まない。 ネットを検索しない。 誰かが教えてくれるのをじっと待っているだけ。 つねに受身の態勢。
100 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 01:09:23 ] 本は持っていません。 ネットは検索しました。 回答を待っています。 受身の人間は質問しません。
101 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 01:15:34 ] 多次元配列の操作についてなんですが、 @aと@bによる二次元の配列@xを作る際に、 for $i (0..$#a){ $x[0][$i] = $a[$i]; } for $i (0..$#b){ $x[1][$i] = $b[$i]; } 多次元配列 @x の i 行目の配列を一次元の配列 @c に移し変えるのに、 for $j (0..$#{$x[$i]}){ $c[$j] = $x[$i][$j]; } というコードを書いてるんですが、もっと奇麗な書き方はありませんか?
102 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 01:38:01 ] >@aと@bによる二次元の配列@xを作る @x = (\@a, \@b); >多次元配列 @x の i 行目の配列を一次元の配列 @c に移し変える @c = @{@x[i]}; 「続・初めてのPerl」のような参考書をお読みください。
103 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 03:24:16 ] 「多次元配列」、「二次元配列」、その過てる認識がドツボへといざなう
104 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 05:56:49 ] >>102 ありがとうございました。 参考書を買って一通り読んだほうがよさそうですね。 アドバイスありがとうございました。
105 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:17:59 ] >>102 × @c = @{@x[i]}; ○ @c = @{$x[i]};
106 名前:デフォルトの名無しさん [2008/01/20(日) 22:02:02 ] >>100 ム板で言う「受け身」は「わからんから教えてくれ」の事だぞコラ hoge や fuga を試したけど moge や munya のエラーになって 困っています。xxx.net や ○●の本を確認したけれど××の所 の通りで間違っていないコードかと思ったんですが。タスケテ の様に複数の試行錯誤と複数の情報確認をひっさげてポストしてみ
107 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:27:18 ] 二次元配列? Perlの配列の要素はスカラーですよ?
108 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:59:15 ] いま本読んでるところだよきっと!
109 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 12:22:47 ] >>91 速さを求めるなら、正規表現の | より、正規表現使わないで or のほうが速いぞ
110 名前:デフォルトの名無しさん [2008/01/21(月) 22:29:32 ] >>97 やっと理解できたよ。map なんて昔からあった?
111 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:32:21 ] 大昔から
112 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 06:44:24 ] 昔っていうと範囲が曖昧だけど、とりあえず前世紀の産物だしな。
113 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 06:46:56 ] 僕らが生まれてくるずっとずっと前にはもう
114 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 07:31:26 ] >>110 perl4 には無かった記憶が。perl5 からだとすると search.cpan.org/~rgarcia/perl-5.10.0/pod/perlhist.pod > 5.000alpha1 1993-Jul-31 > 5.000 1994-Oct-17
115 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 10:44:57 ] map, grep を知ると、出来るだけそれを使ってプログラムを作りたくなる。
116 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 13:29:05 ] >115 なんとなくだが、その気持ちは分かった気がする。
117 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 13:39:17 ] そして後で泣く
118 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 14:18:17 ] >>115 そのままLISPerになっちゃえばいいのにw
119 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 17:29:54 ] >>115 前にも同じこと言ったけど中二病だよね。あれって。
120 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 17:31:34 ] forのかわりにmap使うボケが多すぎたので、voidコンテクストなるものが導入されました。
121 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 17:59:14 ] 昔はgrep/mapのほうがforより速かったからなぁ。
122 名前:デフォルトの名無しさん [2008/01/22(火) 18:23:02 ] たしかに。多言語に書き換えるときに泣くよね。 perl はプロトタイプとして使うな。 有る程度ロジックの検証ができたらCなりjavaなりに書き換える。 だから perl 固有すぎる命令は使いたくないね。 map のつかいかたを一所懸命覚えても、何の糧にもならないし。
123 名前:デフォルトの名無しさん [2008/01/22(火) 18:24:23 ] 122s/多言語/他言語/p
124 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 19:22:39 ] また for厨 が暴れてるのか
125 名前:デフォルトの名無しさん [2008/01/22(火) 19:58:09 ] perl/Tkの参考になるサイトおしえて
126 名前:デフォルトの名無しさん [2008/01/22(火) 20:18:47 ] perl/Tkもいちじはやってたけど、Qt始めてから使わなくなった。
127 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:19:10 ] でっていう
128 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:45:35 ] Google検索でいっぱい出てくるじゃん
129 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:13:32 ] 構造体の要素に多次元配列を使いたいです。 struct A => { aaa => '@', ←ふつうの配列 bbb => '@' ←これを多次元配列にしたい }; $A->aaa(0, 'a0000'); ←これと $A->aaa(1, 'a1111'); ←これはよいとして $A->bbb(0, 0, 'b0000'); ←これはダメ $A->bbb(0, {0, 'b0000'}); ←これもダメ $A->bbb({0, 0}, 'b0000'); ←これもダメ どう書けばよいですか?お願いします。
130 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:22:35 ] perlに多次元配列なんてものはないが、 配列のリファレンスの配列にすればいい。
131 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:26:06 ] >>129 $A->aaa->[0] = 'a0000'; $A->bbb->[0][0] = 'b0000'; こんなんじゃあかんの?
132 名前:129 mailto:sage [2008/01/23(水) 22:22:24 ] レスどうもありがとうございます。 >130 perlに多次元配列はないという噂は聞きますが これまでCと同じ感覚で使ってました。プログラマじゃないので許してください。 >131 そんな記述できるのですね。 やりたかったことです。ありがとうございました。
133 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:15:25 ] 言葉として、n次元配列という時はある。配列のリファレンスの配列、とか言いたくないよ!
134 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:36:07 ] 一人っきりの部屋で、言う機会もないくせに。
135 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:08:28 ] 意味は通じるから多次元配列でも問題ない。 リファのリファとか言うより伝わりやすい。 厳密なのは仕様書書きとかがやればいい。
136 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:14:57 ] 多次元配列言う奴は多次元配列としてしか使わんからなあ
137 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:37:18 ] $hash{'a','b'}でハッシュを二次元配列のように使うとかなかった?
138 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:42:42 ] 普通の配列でやればいい
139 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:48:09 ] >>137 それはPerl5で非推奨になった
140 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:26:30 ] >>137 $hash{'a-b'}みたいなもんだし多次元のつもりでやると想定外のことになりうるからあまり勧められんね。 keysとかで簡単に拾うこともできんし。
141 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:32:05 ] unix epoch より過去を unix time で扱うにはどうすればいいでしょうか。 いまテストしてる環境はWinXP SP2 (5.1.2600) + ActivePerl 5.8.8 です(一応)。
142 名前:デフォルトの名無しさん [2008/01/24(木) 02:20:59 ] ビッグバンより前の宇宙
143 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 03:09:03 ] >>141 そもそもunixtimeの定義からして無理だろ。 負の数を正の整数で表現するにはどうしたらいいですか? みたいなもんだ。 自前の日付表現方法考えろ。
144 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 03:38:28 ] >>143 どうもです。 unix time定義の厳密な定義はわかりませんが、仮に整数のみであるとしても 負数から計算してタイムスタンプなり配列なりを返す実装はありそうかなと思って。 もうちょっと探してみて、なさそうなら他の手を考えます。
145 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 03:40:23 ] 訂正:「整数のみ」→「正の整数のみ」
146 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 05:18:37 ] Perlでオススメのメーリングリストってあります? 検索したら、下記かな?と思いましたが、終わってるようですし。 ttp://bug.org/ML/perl-jp/
147 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 10:42:03 ] >>135 分かってる人間どうしで言うのは構わんけど ここで「多次元配列使いたい」って質問してくる人はたぶん分かってないと思うぞ
148 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:06:45 ] >>146 なんの話題をしたいかによる。 今はどこも過疎ってるけどね。
149 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:30:31 ] MLは使わなくなったなぁ。 ダイアルアップ時代の産物だと感じるねぇ
150 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:50:56 ] >>149 ダイアルアップ時代になって、メールをプロバイダに取りに行くように なって利点が無くなったもんだよ。
151 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 12:46:53 ] >>150 じゃその利点があったとかいう時代に 日本で活動していたMLなんていくつあったの?
152 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:46:59 ] >>151 MLはクローズドな空間を構成するために使われていたから、日本でいくつなんて、 数えられるわけないだろ。 とりあえず私は、あるとき、メールがオフィスタイムに平均して3秒に1通来る状態に なって、biff - メール到来通知エージェントがつねにフラグを立てている状態になっ て、調べてみると72のMLに入っていたので、入っているMLを整理したことがある。 あとになって調べてみると、POPが出てきた時に、「これはMLを殺すぞ」と 指摘していた人がいるんだよね。まあ、その通りになったわけで。
153 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:26:54 ] 読みづらい文章だな
154 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:47:16 ] 何の話ししてんだろ
155 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:10:25 ] はなししとは?
156 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:26:35 ] プログラマってこういうツッコミ好きなやつほんと多いよな
157 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:42:03 ] 以上、俺の自作自演
158 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 17:48:43 ] えー、続きましてー
159 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:14:46 ] 今でもML使ってるよ。昔に比べると流量少ないけど。 ダイアルアップとは関係なく、コミュニティ・ツールが変わったのが大きい気がする。 perlな方々はblogやIRCで済ませてる人が多いみたいだし。 慣れてない人には不親切かもしんない。
160 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:30:09 ] ML衰退は他にもウイルスとか迷惑メールの増加の時期とシンクロしてた様にも。 しかし投稿を一気に落として、必要な書き込み作ってアップロードって作業は 時間が限られた電話回線時代にはマッチしてた様に思うね。 今、特に常時接続になってからはMLでもなんでもクライアントでは データコピーを持たない、ASPスタイルこそが時代の流れと なっていったと思う。 オンライン辞書の類は地味ながら個人的にはここ10年でも 指折りの革新的なツールだと思ってるお。
161 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:00:53 ] 特殊変数だとおもうのですが、$,の使い方を教えてください。 イマイチよくわかりません。 $,=" "; としても すべての変数に空白がつくわけではないようですし・・・
162 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:13:50 ] perlvar嫁
163 名前:デフォルトの名無しさん [2008/01/24(木) 22:49:43 ] google 「perl 特殊変数」
164 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:05:41 ] ircは日本語perlのコミュが会話に入りづらい雰囲気
165 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:07:32 ] ↑お前、日本語が下手だから会話に来なくてけっこう
166 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:43:02 ] pc11.2ch.net/test/read.cgi/tech/1141988910/
167 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:59:19 ] >>161 暇だから答えよう。 $, = ' '; @a = ('a'..'f); print @a; みたいな時に配列の間に半角スペースが入るってだけ。 print "@a"; の間には $" で指定。こっちはデフォで半角スペース入ってる。
168 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:38:17 ] たしかにircは内輪ネタが分からない奴はお断りの雰囲気がある
169 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 21:22:36 ] join関数の方が高速
170 名前: ◆TWARamEjuA mailto:sage [2008/01/26(土) 11:31:21 BE:5881469-2BP(6825)] ユリウス使うと良いのかもかも。@うに刻以前
171 名前:デフォルトの名無しさん [2008/01/26(土) 13:20:13 ] 初歩的な質問ですがお願いします。 open関数でテキストドキュメントを読み込んで 表示するという初歩の操作を試しているのですが、 "invalid argument "というメッセージがでてきて ファイルが開けません。 スクリプトは単純ですが以下の構造です。 open(F , ">C:\Perl\text.txt") || die " stupid : $!\n"; while(<F>) { print; } close(F); ファイルはtext.txtです。パスも間違っていません。どうすれば よろしいでしょうか?
172 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:25:15 ] 一冊入門書を(仮にわからないとこがあっても)通読した方が良いよ。 英語で言うと、I is bookみたいな状態。
173 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:30:38 ] >>171 print ">C:\Perl\text.txt", "\n"; とでもして、おまいが何をしようとしているかを確認してみろ。
174 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:39:26 ] 基本的なことかもしれませんが… Windowsでながーい(256文字以上の)ファイル名使っている場合に ファイル名は取得できるのですが そのファイルサイズなどを取得する方法がわかりません。 短いファイル名ならサイズの取得も可能なのですが 非常に長いファイル名だとサイズに0が帰ってきます。 もしよかったらサイズ取得の方法をヒントだけでも結構ですので 教えてもらえませんか? 絶対できるのは間違いないとは思うのですが…
175 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:34:11 ] WebProgのテンプレをこっちにも入れたいな。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。
176 名前:174 mailto:sage [2008/01/26(土) 20:13:11 ] 大変申し訳ありません。 あの後、考えてみたら Win32::UTCFileTime を使ってなんとかなりそうな雰囲気です。 少なくともいくつかの例ではうまくいきました。 お騒がせして大変申し訳ありませんでした。 もうちょっと自分で考えないとだめですね…
177 名前:デフォルトの名無しさん [2008/01/26(土) 20:17:23 ] >>171 こりゃひどいね。 キミは、自分が何をしたいのかが分かってないみたいだね。 どこをどう直せばいいのか、教えるのは簡単だが それはキミにとって良くない。 入門書を読むことをオススメするよ。
178 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:58:43 ] >>177 そういわずに教えてあげなよ
179 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:00:22 ] >>167 ありがとう。 これからはperldoc読みます。 プログラム言語は奥が深い。 三十路にはキツイザンス
180 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:26:32 ] 下のファイルを読んで、XXX, YYY, ZZZのいずれかでなければ 値を取り込むプログラムを作りたいです。 ==== AAA BBB CCC …… ==== my @prohibit = ('XXX', 'YYY', 'ZZZ'); my @keep; if ($_ !~ /$prohibit[0]/ && $_ !~ /$prohibit[1]/ && $_ !~ /$prohibit[2]/ ) { push @keep, $_; } とすればまあできるんですが、 my @prohibit に禁止文字の追加や削除をしたときに困ってしまいます。 if ($_ !~ /@prohibit/ ) はエラーになります。 下の $ifif を作っても if 文が中身を把握してくれません。どのようにすればよいでしょうか? my $ifif; foreach my $i (0 .. $#{@prohibit}) { $ifif = $ifif . sprintf " \$prohibit\[$i\] =\~ \/\^%s\/ \&\&", $prohibit[$i]; } $ifif = $ifif . ' 0 == 0';
181 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:40:32 ] なんか宿題みたいなの多いなあ。 半年授業をサボってたんだから、少しは自分で勉強しろよ。
182 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:41:02 ] >>180 my $regex = join '|', map quotemeta, @prohibit; if ($_ !~ /$regex/) { ...
183 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:29:02 ] >>170 ありがとうございます。 単純なインクリメントで日単位の処理をしたいだけだったので Date::Calc(::Object)で対応しました、という報告をしにきたところでした。 ユリウス暦とはまったく思いつきませんでしたが、Date::CalcはA.D.以降なので ユリウス→グレゴリオ変換のほうが対応できる範囲が広がりますね。 まぁ20世紀を処理するだけなのでどっちもオーバースペックですがw
184 名前:180 mailto:sage [2008/01/27(日) 00:09:34 ] >182 ありがとうございました!!
185 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 00:35:54 ] Perlインストールしたんだけど どうやってアンインストールしたらいいの? フォルダ削除だけで平気?
186 名前: ◆TWARamEjuA mailto:sage [2008/01/27(日) 00:48:49 BE:2723055-2BP(6825)] >>180 こういうのもありかしら? for my $value (<DATA>){ %prohibit = map +($_, 1), qw|XXX YYY ZZZ|; push @keep, $_ unless exists prohibit{$_}; } exit; __END__ AAA GGG ZZZ YYY ZZZ XXX HHH >>183 月の満ち欠けを画像出力するときに、ユリウスを使って計算をしたことがありましたから(゚∀゚)アヒャ >>185 念のためrootタソになって、# rm -rf 推奨♪
187 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 00:50:04 ] ディレクトリではなくフォルダと言うあたりWindowsか?
188 名前: ◆TWARamEjuA mailto:sage [2008/01/27(日) 00:50:58 BE:4574467-2BP(6825)] >>186 なんかおかしいよな(´・ω・`) my %prohibit = map +($_, 1), qw|XXX YYY ZZZ|; my @keep; for my $value (<DATA>){ push @keep, $value unless exists prohibit{$value}; } exit; __END__ AAA GGG ZZZ YYY ZZZ XXX HHH
189 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:02:24 ] >>187 そうなんです まだ高校生でで思うように開発環境整えられないからさ
190 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:02:31 ] Regexp::Assembleでいいと思うよ。
191 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 03:03:57 ] perlの開発環境なんて本体と標準のメモ帳ありゃできるっしょ。 >>188 なんかあえて難解な書き方にしてるような。
192 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 03:48:53 ] 読めるようになってくると戻り値を変数に入れるのが面倒になってくるよ。 Winだとインストールが面倒(できない)モジュールがあったりするよ。 まぁ中級後半くらいまでは充分だと思うけど。
193 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:12:16 ] そのへんがPerlのまずいところでもある。 モジュール頼みのPerlなのに、モジュールがインストールできなくて ユーザーが離れていってしまうという。
194 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:27:43 ] かと言って初心者にいきなりUNIX系OSのPCをひとつ用意しろとか Winにcygwinを導入してPerl使えとかいうのも酷な感じもする。 まあcygwin perlもCPANで入れられないモジュールもあるらしいけどなあ。
195 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:30:12 ] VMwarePlayerで
196 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:47:07 ] サードパーティのPPM含めりゃ大抵の物はあるだろ。
197 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:12:33 ] colinuxで
198 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:49:21 ] VC++入れてnmakeとclにパス通してCPAN.pmを中心に使ってるが しばしばmake中にエラーが出るので、その場合にはPPMも使ってる。 CPAN.pmとPPMを併用することによるエラーも出てきてるのかもしれないが、 いずれにせよWinにおけるモジュール管理のノウハウをもうちょっと蓄積したいね。
199 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:08:59 ] ActivePerl 5.8.8.822を入れたんですが、ppmを使おうとすると failed: unable to open database file(1) と表示されて起動できません。 ppm-shellは起動できるんですがinstallの段階で同じエラーになります。 どうやらユーザー名にマルチバイト文字が入っているせいらしいんですが エラーを避ける方法はありませんか?
200 名前:デフォルトの名無しさん [2008/01/27(日) 22:50:58 ] Perl/Tkでスプレッドシートの Widgetを作成したいのですが、 ActivePerlでどのモジュールを利用するのか、分かりません。取り敢え ず、Tk::TableMatrixをppmのコマンドでinstall Tk-TableMatrixでインストールし ましたが、サンプルのコードが動きません。ActibePerlのバージョンは This is perl, v5.8.7 built for MSWin32-x86-multi-threadとなって います。 調べていたらuse Tk::TableMatrix;の1行のみのソースでもエラーが出 ます。エラーの内容は、下記です。 Had to create Tk::XlibVtab unexpectedly at C:/ActivePerl/lib/DynaLoader.pm line 253. Use of uninitialized value in subroutine entry at C:/ActivePerl/lib/DynaLoader.pm line 253. 15.pl syntax OK インストールに失敗しているのでしょうか? Perl/Tkの他の Widgetについては、ボタン、ラベル、メニューについては動きます。全 てのテストはしていませんが。ppmのqueryではTk-XlibVtabはありませ ん。searchでは、ActivePerlのリポジトリーにはありません。 そもそもが、スプレッドシートを使う時に、ActivePerlでどのモジュー ルが必要なのかと言う事も理解していません。 恐れ入りますが、分かる方がいらっしゃいましたら、ご教授願います。 Perl/Tkでスプレッドシートが出来なければ、わざわざPerl/TkのGUIを 覚える必要もありませんから。宜しくお願いします。
201 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 00:05:07 ] >>199 環境変数設定し。 新:知らないことがあってもへっちゃらさ: ActivePerl の ppm が起動しないのです riku.justblog.jp/weblog/2008/01/activeperl-ppm-.html
202 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 19:37:31 ] なんでこうなるのかよく分からないので教えてください。 ■テスト1 ・CORE::GLOBAL::exitは呼ばれず、終了してしまいます。 #!/usr/bin/perl use strict; *CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)}; exit(1); 1; ■テスト2 ・事前にSample.pmを作成します。 package Sample; use strict; use warnings; *CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)}; 1; ・CORE::GLOBAL::exitが呼ばれます。 #!/usr/bin/perl use strict; *CORE::GLOBAL::exit = sub {printf "exit(%s)\n",join(",",@_);CORE::exit(@_)}; exit(1); 1; ■動作確認環境 This is perl, v5.8.5 built for i386-linux-thread-multi This is perl, v5.8.8 built for x86_64-linux-thread-multi
203 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 19:38:31 ] すみません。テスト2のコードが間違ってました。 #!/usr/bin/perl use strict; use Sample; exit(1);
204 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 20:24:02 ] >>201 SET ACTIVEPERL_PPM_HOME=C:\Perl\ppm で起動できました これで枕を高くして眠れます ありがとうございます
205 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 21:41:52 ] >>202 コンパイラがexitキーワードを解決するときの *CORE::GLOBAL::exit の問題。 #!/usr/bin/perl BEGIN { *CORE::GLOBAL::exit = sub { printf "exit(%s)\n",join(',',@_);CORE::exit(@_)}; } exit 1; # この行が(実行ではなく)コンパイルされる時の *CORE::GLOBAL::exit
206 名前:デフォルトの名無しさん [2008/01/29(火) 10:53:21 ] my @a = (1, 2, 3, (4, 5)); のように配列の中に配列を入れたいんですが、できますか? やっぱり、リファレンスを使うべきなんでしょうか?
207 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 11:23:20 ] べきっつうか、リファレンス使わないと出来ない
208 名前:デフォルトの名無しさん [2008/01/29(火) 16:01:58 ] linux版CPANを入れたらcpan shellに出入りするたびに Terminal does not support AddHistory. Terminal does not support GetHistory. と言われるんですが、これは何ですか。
209 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:15:04 ] readlineがないとか?
210 名前:デフォルトの名無しさん [2008/01/29(火) 17:32:43 ] >>209 Bundle::CPANのことでしょうか? 入ってるし機能しているはずなんですが・・・。 cpan> で上下矢印キー押すとコマンド履歴出てくるから入ってる証拠ですよね。 おかしいです。
211 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:28:34 ] とりあえず、ソースコードをメッセージテキストでgrepしてみるところから 探求をはじめなよ。
212 名前:デフォルトの名無しさん [2008/01/29(火) 18:38:12 ] >>211 あっ!!そういう手があるんですね。 hackですね。ww
213 名前:デフォルトの名無しさん [2008/01/29(火) 20:38:01 ] やはり分からないのでおたずねします。 cpanの入れ直しから始めて、cpan setup後に cpan >install Bundle::CPAN をして、途中で ---- Ah, I see you already have installed libnet before. do you want to modify/update your configuration(y|n)? [no] ---- とあったのですが、これはどういう意味ですか? (英語としての意味じゃなくて、その中身です。何を指してるんでしょう。) ソース見てもソース自体がよく分からなかったです。
214 名前:デフォルトの名無しさん [2008/01/29(火) 20:41:34 ] あと enter arithmetic or perl expression: exit はexitのままEnterで良いですか? いずれもメッセージ本文でGoogle検索してみたものの英語力不足のせいか 全く目当ての情報が見つかりませんでした。
215 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:03:54 ] >>213 中身て? 単に、設定ファイル上書きしていいか 聞かれてるだけだけど…
216 名前:デフォルトの名無しさん [2008/01/29(火) 21:18:58 ] >>215 中身というのは 「設定ファイルを上書き」 というのが何かという意味です。 perlに慣れた人ならすぐ分かるのでしょうが、私は慣れていないので ピンとこない、といえば伝わるでしょうか?
217 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:21:03 ] 慣れたもなにもcpanの設定を変えていいかどうかを聞いてるだけやがな
218 名前:デフォルトの名無しさん [2008/01/29(火) 21:27:42 ] 2時間もいろいろ調べ続けてこれなんです。 英語は分かるので英語的な意味は分かるんですが、それが「何を指しているか」 が分からないんですよ。 言葉って指すものについての経験が不足していると伝わらないでしょう。 パソコンを触ったことがない人にアルゴリズムの話をしても伝わらないように。 冷静に考えてみてください。 それに、上で引用した ---- Ah, I see you already have installed libnet before. do you want to modify/update your configuration(y|n)? [no] ---- にしたって、その部分の意味は英語の分かる私にはわかりますが、 文脈が分からないのですよ。 言葉って断片だけでは意味をなさなくて、背景の理解があって初めて、 その言葉が理解できるものでしょう。 なので、私がこのメッセージがチンプンカンプンだというのはそういうことです。 それで、どうすればいいんですか? cpanという言葉もよく分かっていない状態なのですが、 設定というのも何を指すか分からないですが、 cpanの設定を変えていいかはどう判断したらいいんですか? よろしくお願いします。
219 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:44:59 ] 自分の書いた設定を書き換えられるのに抵抗を感じるならno。 さもなくばyes.
220 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:14:58 ] >>218 日本語でおk。 要は、「どんな情報があって、それが何を意味していて、その情報を書き換えられたらどうなるのか、ということがわからない」と言いたいんだな?
221 名前:デフォルトの名無しさん [2008/01/29(火) 22:22:50 ] いいえ、ケフィアです。
222 名前:デフォルトの名無しさん [2008/01/29(火) 22:26:14 ] >>219 ありがとうございます。結局よく分かりません。 noにして大きなトラブルが生じそうになかったのでnoにしました。 では、代わりに。これも昨日から発生している問題なのですが、 cpan -fi [modname] としたときに Unknown option : f と出ます。 Bundle::CPANを入れたらforceオプションが使えるようになると聞いたのですが、 このようになります。 ただし、cpanシェルのなかに入って cpan[1]>force install [modname] という操作なら出来ます。 出来ないのは、普通にシェルのコマンドライン上で $ cpan -fi [modname] とすることによるforceインストールが出来ません。 代わりに普通のインストールが行われてしまいます。 "unknown option: force" - Google 検索 www.google.co.jp/search?num=30&hl=ja&q=%22unknown%20option%3A%20force%22&lr= 17件しか引っかからず、よく分かりません。 Bundle::CPAN
223 名前:デフォルトの名無しさん [2008/01/29(火) 22:30:38 ] >>220 質問の意味がよく分かりません。 私が言いたかったのは断片だけでは言葉って意味をなさないということです。 文章的な文脈と知覚経験的な文脈とがあって意味をなすということです。 つまり、 ---- Ah, I see you already have installed libnet before. do you want to modify/update your configuration(y|n)? [no] ---- が分からないという質問に対して2度も直訳的な回答をされたのに対して それでは伝わらないと言ったまでです。
224 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:33:26 ] 経験がないとかいう問題じゃなくて、単に理解力・想像力がないだけだろ。
225 名前:デフォルトの名無しさん [2008/01/29(火) 22:39:55 ] >>224 いいえ、正確には、このケースで必要とされる理解力と背景知識がなかった、です。 それで、背景知識としてどういったものが必要なのかが分からないので手がかりが欲しくて 上記の質問をしたのです。 理解力なんて測定できなくて曖昧なものを頼りにしていても仕方ないので、 まず背景知識を摂取する、そこがスタートだと考えました。
226 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:52:57 ] >>214 については、そのままEnterでOKだと分かりました。 >>222 が分からないので調査中です。
227 名前:デフォルトの名無しさん [2008/01/29(火) 23:01:51 ] >>225 理屈ばっかりこねて行動力の無いタイプだな
228 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:11:30 ] >>223 yes入力してみればどうなるか分かるだろうに。
229 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:59:27 ] >>225 手がかり? 文中にはっきり「libnet」と書いてあるじゃないか。 ググって最初に出てくるのがこのページだ。 perldoc.jp/docs/modules/libnet-1.12/Net/libnetFAQ.pod > libnetって何? > libnetperl5モジュールの集合体で、それらは全てネットワーク > プログラムに関連します。 ネットワーク関係のモジュール名を挙げて設定をするか否か 尋ねてきているんだから、ネットワーク周りの設定を改めて行うか どうか問われている事ぐらい容易に想像できるだろ? >まず背景知識を摂取する それを自力で行う能力が致命的に欠けているだけだろ。
230 名前:デフォルトの名無しさん [2008/01/30(水) 00:39:16 ] >>227 理屈をこねたかどうかが大事なのではなくて、理屈が正しいか、 そして理屈が有効かが大事なんですよ。 正しくないor無効な理屈をこねていて、なおかつ行動もしていないのなら あなたは私を批判する権利があります。 しかし、残念ながらこのケースではそれに該当しません。 それに、私は>>224 に対して>>225 を言ったということを忘れないでください。 >>224 で想像力がないと断定されたのに対して>>225 はその反論です。 決して無駄なおしゃべりをしたのではありません。 >>228 yes入力してみましたよ。noも。3回くらいはやって何が起きたかを観察しましたが 違いが分かりませんでした。
231 名前:デフォルトの名無しさん [2008/01/30(水) 00:39:53 ] >>229 >ネットワーク周りの設定を改めて行うか >どうか問われている事ぐらい容易に想像できるだろ? もちろんです。ですがそれ以上は想像できません。つまり、それ以上は「背景知識」を 摂取することで補完する必要がありました。 なぜ補完の必要があったか、それは以下のことが分からなかったからです。 1. たしかにlibnetと書かれているし調査の結果libnetがネットワーク関連だということも 分かったが、聞かれているのが本当にlibnetについてなのか、つまり、 do you want to modify/update your configuration(y|n)? [no] というのは「configuration of libnet」の意味なのか 2. my configurationをmodifyとあるが私はこれまでにlibnetの設定をした記憶がない。 なのに、my configurationとはどういうことか。 3. configurationをなぜ今する必要があるのか 4. 今configurationの各項目をいい加減に決めてもconfigurationをあとで修正できるのか 5. もしそうなら知る必要があるconfigurationの保管場所はどこか
232 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:44:02 ] ここはお前の哲学を語るスレじゃない。
233 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 02:18:43 ] >>231 この"configuration"は「設定」というより、「構成」なんだろうよ。
234 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 02:56:38 ] Perlの話をしなさい。 ここは自分の思想を押し付けるスレじゃない。
235 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 05:11:37 ] 英語が分かるなら英語圏のユーザーに 聞けばいいんじゃねえの?
236 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 05:27:59 ] IDが無い板なんだからコテハンつけてほしいな あぼーんする手間が面倒だよ
237 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 05:50:31 ] >>231 ドラゴンボールの中でフリーザが一番好きです まで読んだ
238 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 08:52:31 ] >>233 そうなのですか。参考にします。 >>232 >>234 とんだ誤解ですね。私は決めつけられた誤解に対して答えただけですよ。 うらむ相手が間違っています。 それに私は私の哲学をどこで語っているんでしょうか。 Perlに関する質問のやりとりのなかで、致命的な誤解が生じてしまったので、 事情説明をしてコミュニケーションの修復を図っただけですよ。 どこにも私の主観・思想が語られておらず、ただ私に関する事実が述べられているのみです。 (もう一度お読みになってみることをお勧めします。) それなのにその部分だけとりあげて哲学を語っているからスレ違いだとするのは あまりに早計ではないでしょうか。 >>235 それだけの英語力があるかはやや不安です。 やはり、日本人だから日本語のほうが話しやすいものです。
239 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 09:00:21 ] >>238 つうかもっと完結に書く能力はないの? どうせ「誤解のない詳しく書いてどうのこうの」ってくどくど書くんだろ? その妙な書き方 前に見たような気がするが…
240 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 09:10:20 ] >>238 > うらむ相手が間違っています。 >>232 >>234 がお前さんを「うらんでいる」という解釈こそ、この場で最も大きい「とんだ誤解」では。 どこから「うらむ」という発想が出てきたのか、まるで見えてこない。
241 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 10:03:47 ] 自分がなんで注意されてるかさっぱり理解できない天然さんぽいから放置で。
242 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 10:28:45 ] なんという入れ食い
243 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 10:34:40 ] >>239 確かに簡潔に書くことは大切ですが、私が簡潔に書く能力がないとするのは論理の飛躍です。 それに、私の文章が簡潔でないというのも偏見ではないでしょうか。 文字数が特別多いわけでもないでしょう。 あと、簡潔に書けるのになぜ簡潔に書かなかったかというと、その必要を感じたからです。 つまり、あらぬ誤解をかけられて、それがために質問者としての目的の遂行に障害が発生したので、 必要なだけの対策を講じたまでです。 そうした些末なことはまさにスレ本題ではないので、>>241 の言うように放置をお勧めします。 それから、2chは私は数年前から定期的に利用しているので、私の文章をあなたが見た可能性は否定 できませんが、私の今回の文章を見ただけで、あなたが過去に見た特定の文章の書き手と同一視して しまうのは早計ではないでしょうか。 そもそも、仮にあなたが過去に見たような気がするというその文章が私のものだったとしても、 だからどうしたというんですか? 発言の意図が見えてこないし、スレ違いもはなはだしいので自重お願いします。 >>240 うらむという表現は「敵対的な言い方をされる」という表現に置換することも可能です。 要するに、表現方法の問題です。 そもそも、仮に、私が>>238 で「とんだ誤解」といったときに最大な過ちが私の表現方法 にあったのだとしても、>>232 >>234 が誤解をしていることには何ら変わりがありません。 >>241 具体的にどんな点で私が注意されるべきなのでしょうか。 もっとも、>>241 が私に向けた発言でないことは明白ですが。
244 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 10:39:18 ] にゃーにゃー
245 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 10:42:17 ] 日本語として成立しなくなったら釣りも終わりだな。
246 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 10:54:08 ] しねばいいのに・・・
247 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 12:47:15 ] 日本語の得意な朝鮮人が来てますねwww
248 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 12:52:09 ] 895 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/07(月) 02:32:27 頭が悪いのに口だけは達者な馬鹿の典型だなw
249 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:13:01 ] 会社で嫌われてんだろうなぁ・・・
250 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:15:37 ] >>243 早くインストールしろよw
251 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:18:17 ] >>243 > そうした些末なことはまさにスレ本題ではないので、>>241 の言うように放置をお勧めします。 オマエガナ
252 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:23:42 ] 祭りと聞いて(ry
253 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:32:31 ] ごめんなさい。釣りでした。
254 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:39:22 ] 続きまだぁ?
255 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:50:44 ] Perlでは珍しいタイプの狂人だな
256 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 16:52:12 ] この無駄な冗長さはコボラー
257 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:53:12 ] 珍しく伸びてると思ったら …珍しくもないか
258 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 22:51:58 ] それに、あと、つまり、それから、そもそも、 こんな接続詞が多用されている時点で 簡潔に書けてない事がよく分かるな。
259 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:22:35 ] みんな、楽しそう。
260 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 00:11:09 ] あーこんな文章をどこかで見たことがあると思ってたらアレだ 精神病の人が医者に「これこれで私は精神病じゃないです」って言ってるのにそっくりなんだわ たとえばこれとか ttp://www.so-net.ne.jp/vivre/kokoro/psyqa1331.html
261 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 00:16:37 ] 3行でおk
262 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 00:43:52 ] ス レ 違い
263 名前:デフォルトの名無しさん [2008/01/31(木) 02:25:46 ] なぜこのスレに、精神異常者チェイサーズが集結しているのか?
264 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:37:30 ] 後に現れるのは、もちろんキティガイ
265 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:03:28 ] エンターキーを押さなくてもキーボードから 一字だけ入力を受け付けたいときはどうすればいいでしょうか?
266 名前:デフォルトの名無しさん [2008/01/31(木) 20:08:05 ] >>265 っ[Term::ReadKey]
267 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:19:17 ] できました。ありがとうございました。
268 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:23:46 ] $count = $x =~ tr/0-9/0-9/; で数字の桁数を数えられるようですが、どういう仕組みなのか分かりません・・・ くだ質の類だと思いますが、よろしくお願いします。
269 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:47:50 ] tr演算子は置換した文字の数を返す
270 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:48:16 ] $xの数字を同じ数字に置換して,置換した回数を$countに入れてる. $xが数字だけなら桁数と一致するわな.
271 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:32:10 ] 目からウロコが落ちた。確かに数えられるねぇ。 でもなんか違う気がする。
272 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:46:35 ] 面白いコードと実用的なコードには差があるからな。
273 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:59:15 ] できるこたできるけど中身が数字列の場合に限るし それが保証されてるならlengthでもいい気はする。
274 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 03:09:51 ] >>273 my $num = '-123,456'; print $num =~ tr/0-9//, "\n"; # 6 print length $num; # 8
275 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 08:49:13 ] 実戦での桁数は計算で出すよね
276 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 10:18:25 ] 計算てw
277 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 11:53:20 ] n進数の桁数は計算だすよ
278 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 11:54:25 ] >>274 いや数字だけの列と保証されてる場合よ。
279 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:08:24 ] 電話番号やカード番号みたいに、ハイフンがあったりなかったりのチェックで・・ ・・・文字数だけじゃあんまり意味ないか
280 名前:268 mailto:sage [2008/02/01(金) 14:12:06 ] trは置換した文字列を返すんですね。 処理の順番も勘違いしてました。↓の順番なんですね $count = ( $x =~ tr/0-9/0-9/ ); ありがとうございました。
281 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 14:25:00 ] 「置換した文字列」ではない。 置換もしくは削除した文字数を返す。
282 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 14:32:45 ] while ($x =~ m/\d/gs) { $count++ }
283 名前:268 mailto:sage [2008/02/01(金) 14:41:11 ] >>281 書き間違えでしたスイマセン
284 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:47:47 ] 重箱の隅だけど、 tr/a/a/ ってのは置換したことになるの?
285 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:05:17 ] やってみろ。
286 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 17:08:30 ] tr/hoge/hage/ の hoge にマッチした回数でいいんじゃね?
287 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:12:45 ] >>284 文法上は置換する(したことになる)が、実際の置換は行われない。 tr/X// や tr/X/X/ は対象に含まれるXを数える為の記述で、この場合には対象が 左辺値である必要もない。 perl -le "print q/123,456/ =~ tr/0-9a/0-9a/" # エラーにならない perl -le "print q/124,456/ =~ tr/0-9a/0-9b/" # エラーになる perl -le "print int(1234.56) =~ tr/0-9a//" # エラーにならない
288 名前:デフォルトの名無しさん [2008/02/01(金) 21:17:49 ] ちょっと自分で試してみればすぐ答えが出るのに。 なんで試さないのかなぁ。 もしかして、ナイコン?
289 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:24:32 ] 確かにわけわからん レスを書くよりキーを叩く回数が少ないのに。
290 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:55:00 ] 重箱の隅とか言いつつperlバイナリのソースコードのレベルの話を求めてるんじゃね?
291 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:24:02 ] % perl -MO=Deparse -e 'print q/aaaaa/ =~ tr/a//' print 'aaaaa' =~ tr/a//; -e syntax OK % perl -MO=Deparse -e 'print q/aaaaa/ =~ tr/a/a/' print 'aaaaa' =~ tr/a//; -e syntax OK
292 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:10:44 ] 5.00503だと 'aaaaa' =~ tr/a// は Can't modify constant item in character translation と怒られてdieした。5.6.1なら置換回数が返された。
293 名前:デフォルトの名無しさん [2008/02/03(日) 23:24:30 ] 質問です。 だいぶ前に書かれたライブラリ(*.pl)が現役で動いているとします。 色々な箇所で使われているため、(動いている限りは)できるだけこれを修正したくありません。 このライブラリの中に、以下のようなサブルーチンがあります。 sub Func { local *data = $_[0]; #ハッシュにいろいろ詰め込む } このサブルーチンは、以下のように呼び出すようにとサンプルコードが示されています。 local %hash; &Func(*hash); これを呼び出し側だけでもlocalを排除しようと、以下のように書き換えました。 実行してみた結果、ちゃんと動いているように見えます。 my %hash; Func(\%hash); この場合、 1.呼び出し元だけを書き換えることに意味はあるのか? 2.あるとしたら正しい書き方は?(cron、CGI、mod_perlで動かすことを想定) よろしくお願いします。
294 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:17:53 ] バージョンによる
295 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:25:32 ] >>293 一般論としては、その修正で得られるのが自己満足だけなら、さわらないことをお勧めする。
296 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 10:16:16 ] >294 あ、バージョン書き忘れてました。 Perl 5.005 Apache/1.3.28 (Unix) mod_perl/1.29 ※下2つはCGIやmod_perl動作時のもの。 >295 自分がlocalの挙動をきちんと理解していないこともあり、予期せぬバグを生み出す原因になるので なるべくmyで統一したいと考えています。 それに、そのサブルーチンを呼ぶときだけlocalなのも変かなーと。
297 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 10:21:10 ] >>296 > 自分がlocalの挙動をきちんと理解していないこともあり、予期せぬバグを生み出す原因になるので > なるべくmyで統一したいと考えています。 そんな変質的行為に突入する前に、localの挙動をきちんと理解しろ。
298 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 10:41:31 ] localだと値を追いかけるのが面倒で……。
299 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:08:20 ] 基本的にはそれで正しく動くはず。 ただ、1.2.の問いがあるから「書き換える必要はないんじゃないの?」って言われてるわけで。
300 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:38:30 ] ありがとうございます。 ライブラリの方を修正したいけど……中途半端に手を出したら悲惨なことになりそう……
301 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:52:29 ] 古いライブラリをmod_perlで使おうとは思わないなぁ
302 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:18:11 ] 古いライブラリをmod_perlで使うんじゃないんです 古いライブラリがmod_perlで動いてるんです……
303 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:22:08 ] 自分なら、そんな動作よくわからない関数mod_perlで使わないが・・・ なんかラッパー関数作ってそっち使うようにしてけば そのうち古い関数は淘汰されるんでは?
304 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:51:20 ] まあ、その少しずつやってます……。
305 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:53:56 ] 他人の書いたperlの読みにくさは異常 書き換えるよりも書きなおしたほうが早いことさえある
306 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 14:38:28 ] 読みながら書き直したりする。 以前、「どう見てもPrologです。本当にありがとうございました」な プログラムをもらったことがある。
307 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:33:33 ] よくわからない物はよくわかるようになるまで触らない方がいいとは思うな。 localが気になるならコメント添えてここはこういう理由って記述しときゃ後で見たときにもわかるし。 せめてそのライブラリの流れ把握できるくらいになってからでないと。
308 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 19:53:07 ] localの98%くらいはmyにしてしまっても問題なくね?
309 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:06:02 ] いや、97%くらいだろ。
310 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 05:09:26 ] 動いてんならいじるなよ
311 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:09:00 ] 懸念してるのは想定外の2%だか3%のバグの発生だからな。 上でも言われてるがいじるメリットが自己満足だけなら俺もそのままのがいいとは思う。
312 名前:デフォルトの名無しさん [2008/02/05(火) 20:11:35 ] Exporter が import を強制的にexportしなくなったのって、 仕様変更はいつから? 実装変更は、perl 5.9から?
313 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:30:23 ] 人狼ってゲームのCGI設置したいんだけど(nifftyに) できなくて質問CGIが動かないんだけど、以下エラー Wed Feb 06 00:22:09 2008 Client Abort 2-- detected during CGI/SSI process Wed Feb 06 00:22:10 2008 Warning: Connection closed and CGI process ID=400 still alive Wed Feb 06 00:22:11 2008 Warning: Connection closed and CGI process ID=400 still alive Wed Feb 06 00:22:12 2008 Warning: Connection closed and CGI process ID=400 still alive Wed Feb 06 00:22:14 2008 Warning: Connection closed and CGI process ID=400 still alive Wed Feb 06 00:22:15 2008 Warning: Connection closed and CGI process ID=400 still alive Wed Feb 06 00:22:16 2008 Warning: Connection closed and CGI process ID=400 still alive Wed Feb 06 00:22:18 2008 Warning: Connection closed and CGI process ID=400 still alive Wed Feb 06 00:22:19 2008 Warning: Connection closed and CGI process ID=400 ・・・・・・ 以下の文法あやしい? sub sub_lock { # 1分以上古いロックは削除する if (-e $lock_path) { local($mtime) = (stat($lock_path))[9]; if ($mtime < time - 60) { &sub_unlock; } } local($retry) = 5; # mkdir関数式ロック while (!mkdir($lock_path, 0755)) { if (--$retry <= 0) { &error('LOCK','LOCK is BUSY'); } sleep(1); } $sys_lockflag=1; } ニフティで設置してる人いたからできるとは思うんだけども誰か助けて(;;)。。。
314 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:18:29 ] 鼬害です
315 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 03:27:35 ] >>1 の冒頭くらい読んでね。 ここはプログラムの板でってCGIの板じゃないよ。はい移動。 pc11.2ch.net/test/read.cgi/php/1176143582/
316 名前:デフォルトの名無しさん [2008/02/06(水) 16:20:24 ] Perlって数ヶ月書かないだけでかなり忘れるんだけど、 おまいらPerlは毎日のように書いてるの? 俺のような記憶力弱いやつはPythonに替えるべき?
317 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:22:52 ] $str =~ tr/a-z/A-Z/g; として小文字を大文字に変換しようとしてますが、 Bareword found where operator expected〜 とか言ってエラーになります。 何度ググってもこれであってるぽいんですが…。わけがわかりません助けて。
318 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:26:31 ] その前後が問題なんじゃないの?
319 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:29:44 ] >>317 自己レス gをなくしたら通りました。g使えないの? ぐぐってでてきた複数の例で使われてるんだけど。 試したVerは5.8.2と5.8.8。
320 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:31:36 ] tr///はcdsだけみたいね
321 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:01:29 ] uc($str);
322 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:26:53 ] >>316 そんな毎日やるわけないけど 忘れたらリファレンスのページとか参考にすりゃいんじゃないの? >>319 gはm s // だけのはず。 tr y は>>320 似てるけど一応動作は別もんだからね。
323 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:47:07 ] >>316 Pythonでも、クラスのメソッドとか多くて覚えられないけどね。 ただ、Pythonに乗り換えたらPerlには戻れないと思う。
324 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:38:28 ] >>316 使うときはWebサイトか昔書いたソースを見ながらやってる
325 名前:デフォルトの名無しさん [2008/02/06(水) 22:47:26 ] >>316 毎日とは言わないが、けっこう頻繁に使ってるな。 1回しか使わないような使い捨てスクリプトは perl で書いてる。 何度も使うのはCやjavaやVBやVBScriptや・・・・ perl って便利ですよ。 バッチファイルみたいに手軽にかけて、バッチファイルよりも遥に高度な処理ができるからね。 perl が嫌われてる理由を俺なりに考えてみた。 ・漢字(ShiftJIS)に対応していない ・サーバアプリに向かない(CGI は負荷が重い) ・ソース丸見えだから業務アプリに向かない(納品できない) でも使いようによっては超強力だよ。
326 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:56:53 ] perlって嫌われてるのか? ところでperlで自分で書いたものって一月も前に書いたものは修正したくてならなくなるんだがwww
327 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:58:19 ] > 漢字(ShiftJIS)に対応していない Encode.pmがあるじゃない > サーバアプリに向かない(CGI は負荷が重い) Hatena, Mixi, その他探せば色々あると思うんだけど Perlが糞な理由はOOPやリファレンス回りの小汚い記法と 省略の美学(笑)によって解読不能なコードが書けるからだろう きちんと書けば(『Perlベストプラクティス』みたいに)大分ましだが Perlの特長を削いでる感じがするね
328 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:21:34 ] >>325 >ソース丸見えだから業務アプリに向かない 暗号化する仕組みがあるよ。
329 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:33:04 ] 個人で使うならRubyかPythonのほうが幸せになれる?
330 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:46:13 ] >>329 個人で使うだけなら、迷わずPerl。 まぁ、好き好きだけどね。
331 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:57:31 ] 理由はユーザーが多いから?年期の入った言語ゆえにソースが転がってるから?? 後発の言語のほうが練られてそうなんですが。 初学者なんでこのままマスターしようか乗り換えようか迷ってるのですわ。
332 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:02:24 ] perlなんて簡単なバッチ処理を書いて使い捨てにするようなのに向いてる言語だから、 マスターした!って達成感を味わいたいなら別の言語にしたほうがいいよ。
333 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:05:36 ] perlを使う理由なんて「どこにでもある」「たいていのものはCPANにある」しかないよ。
334 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:08:19 ] マスターてのがどういう状態を指してるのか分からんが、 一通り文法覚えて書けるようになるだけなら、RubyもPythonも大して変わらんね
335 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:24:51 ] Perlぐらい憶えときゃええがな。他言語へも1,2週で移行できるわな そんな人生の選択みたいに迷うほどのことちゃいまっせ
336 名前:331 mailto:sage [2008/02/07(木) 01:43:10 ] マスターって言葉使いましたが単にテキスト処理ならなんでもってレベルです。 レスありがとうございました。とりあえずPerl覚えときます。
337 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:50:17 ] >>327 横入りだけどJcode使ってた身としてはEncodeはかゆいとこに手が届かないなぁ。 あと、今はPHPとかエディタの機能とかで知れてるけど正規表現に腰が引けてる人もいたかもね。 使いこなせば強い味方だけどいきなりだとさっぱりわからんだろうし。 記述の簡略化はあるねー即興で組んだやつはファイルのクローズせずに終わらせたりかなり乱暴なことしてる。
338 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:12:19 ] 良くも悪くも無茶な書きかたができるよね
339 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 09:46:44 ] コード書く →後日、意味もなく省略化を施す →さらに後日、自分の書いたものが理解できず解読作業 ひとつのコードで3回も楽しめるPerlサイコー\(^o^)/
340 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:38:16 ] >>339 あるあるwwwありすぎて困るwww
341 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:22:36 ] 日々のperlは書き捨て
342 名前:デフォルトの名無しさん [2008/02/07(木) 12:13:33 ] 激しくスレ違いかもしれませんが、質問です。 PCゲームを多重起動しようと試みたのですがダメでした。 大抵のゲームはWindowsのアカウントを2つ作成し、別々のアカウントで起動すれば問題ありません。 現在、Vistaを使っているのでXPではどうなるかはわかりませんが(XPは右クリックから別ユーザーで起動が可能)、 Vistaでその手法をとる場合、runasコマンドを使用することになります。 しかしこのコマンドで別々に起動しても、後から起動したほうが無効になってしまいました。 で、ここからがわけわかめなのですが、同一のデスクトップからの起動はダメでも、 Windowメニュー→ユーザー切り替えをし、別々に起動すればうまくいきました。 この違いはいったいなんなのでしょうか?
343 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:17:36 ] このゆとりはいったいなんなのでしょうか?
344 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:27:32 ] 単なる誤爆じゃね? と思いたいが
345 名前:デフォルトの名無しさん [2008/02/07(木) 15:02:53 ] use utf8; use Encode; use WWW::Mechanize; my $start = "***.com/***html "; my $mech = WWW::Mechanize->new( autocheck => 1 ); $mech->get( $start ); my $phrase = 'こんにちは'; $mech->follow_link( text_regex => qr/$phrase/); ..... 見たいなコードを書いて日本語のページ(shiftjis)をとりに行ってるんだけど、 getのときの文字コードの判別がうまくいかないので、 text_regexがうまく動かないんですが、いい方法ないですか?
346 名前:デフォルトの名無しさん [2008/02/07(木) 17:29:33 ] >>345 裏2chにあります ●裏2chの入り方 1・”名前欄”に「ura2ch.czfusianasana.net」と入力します。 裏2chへ飛ぶためのコマンドです、間違えないように”「」”の内側の文字をコピーペーストして下さい。 2・メール欄に閲覧したい板の関連キーワードを入力してください。 例:ロリ、グロ、無修正など 3・”本文欄”にIDとパスワードを入力します。 ID/パスワード=「guest/guest」 4・書き込みが終了すると2chのTOPに戻るのでもう一度入場 5・背景が暗転していたら成功、裏2chに侵入出来ています。 ちなみに裏2chに既存の板は勿論存在します、それにサーバーは外国のサーバーなので日本のややこしい法律に抵触する事も無いです 週末や2ちゃんねるで話題の事件があるときはアクセス数が増えサーバーに負荷がかかる為、つながりについ場合があります スポーツ選手のコラや無臭性画像も多数UPされている板も存在します それに完全な匿名性を誇るので違法行為を繰り返しても逮捕される事はまずありません
347 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:01:32 ] すごい久々にそのコピペ見た。
348 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:07:56 ] :content_cbで変換するとか?
349 名前: p4143-ipbfp205otsu.shiga.ocn.ne.jp ◆TWARamEjuA mailto:例:ロリ、グロ、無修正など sage [2008/02/07(木) 20:57:18 BE:3811875-2BP(6825)] wktk♪ 名前が長すぎるようです♪
350 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:41:57 ] コマンドプロンプトでperl -vと打ち込むところでperlと打ち込んだら exitと打ち込んでもコマンドプロンプトが終了できなくなってしまいます・・・
351 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:03:10 ] __END__
352 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:08:09 ] kill -KILL `pidof perl`
353 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:10:53 ] ^D
354 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:16:05 ] CTRL+Z エンター
355 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:33:02 ] ctrl+s押して右往左往したことはある
356 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:05:11 ] >>355 あるある。リンクが切れたのかと思っちまう。 #ちなみに、Ctrl+Qでぬける。
357 名前:345 mailto:sage [2008/02/08(金) 11:45:09 ] 自己解決しました。 裏2ちゃんねるにはいけませんでした、残念w
358 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:38:06 ] >>332 >perlなんて簡単なバッチ処理を書いて使い捨てにするようなのに向いてる言語だから、 したり顔でそんな放言出来るなんて、おまいはまだまだだな。 perlでも信頼性と保守性を担った、アプリケーションと呼べるレベルのものまで書けるわさ。
359 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:57:31 ] でっていう
360 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:14:05 ] さくっと書いてさくっと終わるようなものに 「も」 向いている言語だというのは間違いないんじゃないかな
361 名前:デフォルトの名無しさん [2008/02/09(土) 01:32:18 ] いっしょけんめいPerlのコアなプログラミングを学習したところで、 就職にはなんの役にも立たない。 それどころか、履歴書や職務経歴書に「Perl」などと書こうものなら 面接のその場で不採用決定。 C言語とか覚えとけば、java やその他の言語にも生かせるが Perlじゃ「つぶしが利かない」からねぇ。
362 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:38:34 ] まあ、趣味のプログラマな人間には全く関係ない話題ではあるなあ。
363 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:52:55 ] ウチの会社なら…履歴書の審査は通るぞ! (他の履歴とか面接でダメになる可能性はるけど)
364 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:54:14 ] VBとか書いてあるよりはマシ。 まあ、会社の分野というか方向性によって違うんだろうけど。
365 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 06:17:51 ] 「特技: 自転車に乗れます」と書くようなもんだからな。
366 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 06:38:44 ] 参照渡しについて質問。 $a = 'aa'; $b = \$a; print $$b; のデリファレンスを print $b; この形で行いたいんですが、良い代入方法は無いでしょうか? *b = *a;は配列とかも同じになるので無しで。 PHPの $b = &$a; みたなのを希望。
367 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 07:02:56 ] >>366 www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html#Symbol_Tables $b = \$a;
368 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 07:07:50 ] >>367 ありがとうございます。 読んで来ます。
369 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:14:46 ] 比較で一致しないのはなぜ? 整数だと一致するし、直接比較しても一致する。 $b = $b+0.1; がみそ? $a = 5.5; $b = 4.5; for($i = 0; $i< 11 ; $i++) { if($a == $b) { printf("match :"); } else { printf("unmatch :"); } printf( "%2.2f %2.2f \n",$b,$a); $b = $b+0.1; } 結果 unmatch :5.40 5.50 unmatch :5.50 5.50 (- 一致しない
370 名前:デフォルトの名無しさん [2008/02/09(土) 09:24:45 ] >>369 異なる値が一致しないのは当然。
371 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:50:00 ] 浮動小数点を==で比較してはいけない。プログラミングの常識。
372 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:51:09 ] 差の絶対値がある閾値より小さいかどうかで調べるよね。
373 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:58:13 ] へーそうなんだ。整数しか使ったことがないから知らなかった。 369じゃないけど勉強になったわ。
374 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:12:53 ] cygwinのPerlだと perl -e '$A=5.5;$B=5.500000000000001;print "match\n"if $A eq $B' これがイコールになっちゃうみたいですね
375 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:18:45 ] 浮動小数点表現では0.1が循環小数になる。 (だからお金の計算に浮動小数点使っちゃだめ)
376 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:02:59 ] >>374 eqの意味知っていて意図的に使ってるの?
377 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:08:21 ] >>374 こりゃ便利だな。
378 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:17:17 ] >>371 FAQのようですね。確かに今回初めて浮動小数点の比較を使ったんだけど、知らなかった。
379 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:29:41 ] >>378 > FAQのようですね。 ちゃう。ちゃんとした教育を受けた人なら、質問を出す前に教わるくらいの事柄。
380 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:32:41 ] >>375 じゃあ、お金の計算には何使えばいいんだ? 利息計算とかでいやでも小数使うと思うんだが。
381 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:40:17 ] 10進浮動小数点数
382 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:45:35 ] >>379 スマソ。 教育は受けてない。
383 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:49:14 ] Perlの場合はBigDecimalだったっけ?
384 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:20:08 ] >>380 例えば消費税なら価格に5かけてから100で割る。 要するに細かい計算は整数で計算する。
385 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:50:44 ] それでは、コボラーさんどうぞ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
386 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:52:56 ] 固定小数点という便利な言い方があると思うんだが(笑)
387 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:02:22 ] 固定小数点でも底が2なら0.1は表せないだろ。
388 名前:デフォルトの名無しさん [2008/02/09(土) 20:29:27 ] ある既存のシステムからもらってきたデータの中に4バイトの単精度実数が入ってるんです。 それを受け取りたいんですが、画面表示すると丸め誤差ってヤツ?が出てしまうんです。 ためしにやってみたこと $x=pack('f', 123456 ); $y=unpack('f', $x); print $y,"\n"; $x=pack('f', 0.05 ); $y=unpack('f', $x); print $y,"\n"; $x=pack('f', 0.0000001); $y=unpack('f', $x); print $y,"\n"; 結果 123456 0.0500000007450581 1.0000000116861e-007 元の数字に戻すには、どうしたらいいですか?
389 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:32:19 ] >387 「固定少数点」でググれ
390 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:34:52 ] >388 精度を指定すれば?
391 名前:386 mailto:sage [2008/02/09(土) 20:36:48 ] >387 すまん、>384への補足のつもりだったんだ
392 名前:デフォルトの名無しさん [2008/02/09(土) 20:52:05 ] >>390 精度の指定の仕方を教えてください。
393 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:44:37 ] >>388 $x=pack('f', 0.0000001 ); $y=unpack('f', $x); ($z = sprintf("%.7f\n", $y)) =~ s/\.?0*$//;print $z;
394 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:23:05 ] 標準入力を待つため以下の様に書いたがうまくいきません。 何がまずいのでしょうか。ActivePerl5.8です。 use IO::Select; $sel = IO::Select->new; $sel->add(\*STDIN); while(1){ print "can_read\n"; @a = $sel->can_read; foreach $fh (@a){ if($fh == STDIN){ print "STDIN\n"; } exit; } }
395 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:51:18 ] >394 perlport より >select >Only implemented on sockets. (Win32, VMS)
396 名前:394 mailto:sage [2008/02/10(日) 18:23:33 ] >395 そう言う事かー。納得しました。ありがとうございました。
397 名前:デフォルトの名無しさん [2008/02/11(月) 02:25:54 ] 現在、与えられた文字列を読み込み、それを元にHTMLを出力するプログラムを作成しています。 与えられた文字列の中に特定のキーワードを見つけると、それをリンクに変換するようにしたいと考えています。 例: [google:hoge] → <a href="www.google.co.jp/search?q=hoge ">Googleでhogeを検索</a> [mixi:xxxxx] → <a href="mixi.jp/show_friend.pl?id=xxxxx ">mixi</a> xxx.xx → <a href="xxx.xx ">xxx.xx</a> こういった置換を行うコードを1つずつ書くのではなく、 例えば、以下のような置換パターンをセットしたハッシュを用意しておき %hash = ( '\[google:\w+\]' => '<a href="www.google.co.jp/search?q=$1 ">Googleで$1を検索</a>', ) forやforeachで回しながら自動的に置換したいのですが、どのようにすればよいでしょうか。 (エンコードとかは考えない方向で) foreach my $key (keys %hash) { $input_str =~ s/$key/$hash{$key}/g; } とやった場合、変換後の文字列の中に「$1」そのものが入ってしまいます。
398 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:29:35 ] $input_str =~ s/$key/$hash{$key}/gee; できるかは知らん
399 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:43:55 ] >>397 クロスサイトスクリプティングって知ってるか? 素人のCGI作成は法律で禁止して欲しい。
400 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:28:03 ] >>397 答えそのものは書かないけど、以下のことが必要。 '\[google:\w+\]'の部分は'\[google:(\w+)\]'でしょうね。そうしないと $1で受け取れないから。 置換をするなら、 $input_str =~ s/$key/conv($1, $hash{$key})/eg; などとしておいて、 sub conv { my ($word, $str) = @_; $str =~ s/\$1/$word/g; $str; } などとでもしておくとか。 で、 URLのクエリー部分に仕込む文字列はURIエスケープが必要。 そんで、マルチバイトの場合、どの文字コードにしてからエスケープするかも 考える必要あり。 さらに、<a>と</a>の間の文字列に使用するときはサニタイズ処理が必要(XSS対策)。 >>398 の方法だと、perlコードをそのまま解釈してしまうので、別の危険あり。 「与えられた文字列」は誰が与えるのかがとても大きな問題です。 URLにリンクを張るのは、大崎氏のPerlメモが使えると思います。
401 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:57:26 ] >399 もちろん知ってます。 置換条件と置換パターンを配列などに保持しておく(または外部から読み込む)という考え方自体が セキュアではないということでしょうか? >400 ( )で括って無かったのは書き込み時のミスです、すみません。 手元のソースでは書かれてたんですが、適当な条件に直すときに忘れてしまったようです。
402 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:22:23 ] 置換パターンにperlの$1を流用しようとしてるところがセキュアでない。 '<a href="www.google.co.jp/search?q=${1:urlencode (utf8)}">Googleで${1:htmlsafe}を検索</a>' とかして、これを解釈するようにすればよい。
403 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:27:17 ] ありがとうございます。 自分用のツールをさくっと作るつもりだったけど、そこまでやろうとすると手間かなあ。 誰かモジュール作ってるかもしれないけど。
404 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:12:59 ] 質問です。 'おまんこ'も'おちんこ'もマッチしないのですが、どこか間違いあるのでしょうか? use strict; use warnings; use utf8; binmode STDOUT, ':utf8'; while (my $str = <STDIN>) { chomp($str); last if ($str eq 'end'); if ($str =~ /お.んこ/) { print "$& --- マッチしたお\n"; } else { print "マッチしないお\n"; } }
405 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:16:55 ] binmode STDIN, ':utf8'; 追加したらマッチしますた。
406 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 05:34:25 ] 質問です。 use Encode; binmode STDOUT, ':iso-8859-1'; open READ , '<:encoding(utf8)', "$ARGV[0]" ; while (my $data = <READ>){ print "$data"; } close READ; exit; でutf8でencodeされたファイルをiso-8859-1に変換しようとしたら、 標準出力ではうまくいって、リダイレクトすると文字化けしました。 おわかりになる方、いらっしゃるでしょうか。
407 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 05:45:10 ] lv でみれないだけで、less したらみれました…すいません。
408 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 09:07:43 ] >>407 lvのほうがlessより優秀ってイメージなんだけど、lvが文字コードを誤判定しちゃったのかな。
409 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:12:12 ] use CGI; my $delimiter = "\t"; my $q = new CGI; my $save = $q->param('name') . $delimiter . $q->param('mail'); my ($name, $mail) = split /$delimiter/, $save; 入力はHTMLフォームからを想定しています。 こういった場合に適切なデリミタは何でしょうか。 たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし \tは入力が可能、\0は良い方法だと思いますがCGI.pmと衝突します。 \a等が良いのでしょうか。
410 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:14:45 ] × たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし ○ たまに<>を見かけますが<>を<>に変換してる場合じゃないと有効で無いですし ミスりました汗
411 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:52:41 ] 板違いっぽいがスペースじゃだめ?
412 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 13:13:53 ] $save の前に入力チェックしてタブ文字を消せばいいだろ
413 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:12:21 ] my $save = join("&&", map { my $i = $q->param($_); $i =~ s/&/&/g; $i } ("name","mail")); my($name,$mail) =~ map { s/&/&/g; $_ }(split("&&",$save));
414 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:08:01 ] >>409 <SOME_UNPREDICTABLE_STRING_XXX> でおk
415 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:16:04 ] 投資家板で名高いプログラマの書いたコードですが 初心者が多く、下記コードについて評価できません プロの目から見た下記コードの評価を教えて下さいませ live27.2ch.net/test/read.cgi/market/1202806626/454 $vict++; $vict100++; print $_ ."$riekiプラス!持ち越し成功!\n"; } if($end < $start2){ $loss=$start2-$end; $loss=~s/\-//; $totall =$loss + $totall; $totall100 =$loss + $totall100; $lost++; $lost100++; print $_ ."$loss マイナス!持ち越し失敗!\n"; } }
416 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:16:34 ] つづきです if(($cost < 1000)&&($cost > 300 )){ if($end > $start2){ $rieki=$end -$start2; $rieki=~s/\-//; $totalr =$rieki+$totalr; $totalr1000 =$rieki+$totalr1000; $vict++; $vict1000++; print $_ . "$riekiプラス!持ち越し成功!\n"; } if($end < $start2){ $loss=$end-$start2; $loss=~s/\-//; $totall =$loss + $totall; $totall1000 =$loss + $totall1000; $lost++; $lost1000++; print $_ . "$lossマイナス!持ち越し失敗!\n"; }
417 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:22:13 ] >>415 前の部分が欠けてて途中からになってるけど…?
418 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:35:29 ] 書きかたはまるっきり初心者 処理内容としては 1.コストで場合分け(ここで見えてるのは300から1000まで) 2.スタートとエンドの差をとって,スタートがエンドより低ければ利益,逆なら損害として出力 3.利益または損害をトータルに加算 4.利益の出た回数と損害の出た回数をカウント.コストの範囲ごとにもカウント なんつうか小学生でも計算できる内容だ
419 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:43:46 ] 計算さえ出来ればいいんでしょ? 合ってりゃいいと思うよ
420 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:54:35 ] >>415 軽くスレ読んだが名高いプログラマじゃなくて単に周りに避けられてる面倒くさい人じゃん。 コードは上で言われてるように初心者でも書ける程度のもん。 プログラム書かない人にけん制になると思ったのかもしれんが こんなの書いて自慢する人より電卓持ってる事務員のがずっとマシ。
421 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:08:22 ] ちゃんと動いて計算が合ってるならいいんじゃないの? それ以外に評価しようが無い。
422 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:11:02 ] 「名高いプログラマ」ってとこは確かにどうかと思うコードではあるw
423 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:17:13 ] あっちのことはよく知らないけど,変な演算する能力よりもデータを見極める目のほうが大事なんじゃないの?
424 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:25:14 ] 主婦が、余った材料で栄養バランスの取れた料理を作るようなイメージ。 プロの料理人と比較しちゃいけない。
425 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:27:12 ] 典型的なうんコードだな
426 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:31:07 ] >>421 あ、ごめん。機能満たすだけなら充分。 でも向こうのでの使い方が目的あって出してるコードじゃなく 素人にコード見せて牽制してるだけだからこんなの自慢にならんなぁって。
427 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:36:31 ] データを集積して処理するならともかく、この程度のことなら電卓+ノートのほうがいいと思うがな
428 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:40:32 ] サイタマン は やっぱり うんこだった!
429 名前:415のスレ住人 mailto:sage [2008/02/13(水) 12:41:56 ] 名高いプログラマーというより彼は社長だそうです。 年収3000万だったそうです。 ですからプログラムの内容というよりは アイデアで儲けている方なのかもしれませんね。 真実が定かでは無いのですが彼がIT企業の社長という点はどう思われますか?
430 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:42:37 ] >>424 だが余った食材をそのまま食べたほうが味も見た目も栄養も手間も優れていたというパターン ただの自己満足にしかなってないという…
431 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:43:04 ] こっちに来られると困るからノーコメント。
432 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:44:33 ] 内容云々じゃなくて、これくらいすばらしいコードを書けるスキルがあれば年収2000万くらいは最低限ある、 という内容のことを言っていたのですが、株板では判断できる人が少なかったので参考になりました。
433 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:45:27 ] __ ♪ ヨホホ♪ \ \ ♪ \/ `' ==‐‐-- 、 ♪ ξミミミミミ ./\ .ヽ, . |´_`| / .\ ,l /.__) ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄| 〜l└‐L、 _,==.,―――=,==r′ l~~`ゝつ.l l |||/ | l´ l | . ´|| ̄||´ |.|≠ || ||
434 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:46:12 ] >>429 とりあえず 2chに入りびたってコテハンつけてる そんなIT社長はイヤだ
435 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:46:21 ] サイタマン社長の名言集です。 どうぞ全部読んであげてください live27.2ch.net/test/read.cgi/market/1188339064/l50
436 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:46:32 ] __,,γ⌒ヽ _ ,,-''", ―‐―イ―ュ---、,,,,,,,,,,_ 三\ / ∠ ム_ゝ三i二二(山山アヲ -= 二) γ √ イ,, -" .三/ .ん、_(γ7''"  ̄ r_,ノ''こ!、,,┴. .| ‘''く′ ,/ │ .r'ヘ,、 `'イ゙>'" .厂|,`'-,, .|'ヽ、 .〜へ-―‐^''ー"
437 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:47:22 ] 「○○なら年収○○万くらいは最低限ある」 なんて言い方する時点で中二病 ここは2chだぞ
438 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:48:36 ] 個人のスレがたってるような奴を信じるなよw
439 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:50:03 ] >>437 投資板はcisっていうイレギュラーの塊のような人が住んでるから うそつきが住みやすいんですよ
440 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:51:27 ] コテで自慢する人は注目されたいだけ。 >>435 いりません。お引き取りください。
441 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:51:27 ] 2レス目まで読んだ Results 1 - 10 of about 1,040 Japanese pages for 金拝主義. (0.21 seconds) Results 1 - 10 of about 5,450 Japanese pages for ボラリティ. (0.14 seconds) Results 1 - 10 of about 3,130,000 Japanese pages for シュミレーション. (0.10 seconds) Results 1 - 7 of 7 Japanese pages for イートレイドワラッパー. (0.35 seconds) プロフィールをていぞう 愚かの骨頂 個性的な語彙を持ってることはわかった
442 名前:デフォルトの名無しさん [2008/02/13(水) 12:51:45 ] サイタマン社長はゴールドカードもupしてるし 信じたいんですがやっぱり嘘なのでしょうか。 客観的に見てあのくらいのプログラムが書ければ年収二千万はいけるのでしょうか
443 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:53:43 ] >>442 すでに必要な情報は提示されてる。あとは自分で考えれ。 ここは2chだぞ。
444 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:55:09 ] おー。変数名に数字つかうってスゴいセンスだな。 でどこの幼稚園の子供よ?
445 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:55:13 ] これだけ持ち上げられるってことはなにか持った奴なんじゃない?
446 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:57:50 ] どうやら面白ワード生成機として有名みたいだな。
447 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:59:57 ] サイタマン先生の今までupした物は 200万円くらいのお金と60万円の証券会社の口座と ゴールドカード4枚ですね。 プログラムのスキルでよく株のツールなどを作ろうかなどと言ったりします
448 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:12:34 ] >>447 なんだかんだで君も彼にぞっこんっぽいなw
449 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:14:02 ] >>446 2ch語を適当に組み合わせるしか脳のない「普通の厨」なら、 似たようなクオリティの人工無能も書けるかもしれないけど、 天然素材は模しようがないなw
450 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:19:08 ] >>449 実は本人はスーパーハカーで,2chに書き込んでるのはサイタマンに作られた人工知能なんじゃないか… そしてあのコードも学習して自動生成されたんじゃないかと妄想してみたwww
451 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:29:30 ] >>447 ゴールドポイントカードならぼくも持ってるよ。
452 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:33:07 ] ま、スレ違いだから去れ
453 名前:デフォルトの名無しさん [2008/02/13(水) 15:54:58 ] aaa1 aaa2 aaa3 aaa4 というファイルがあったときに 通番どおりに結合して1つの出力にする上手い方法ありませんでしょうか?
454 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:59:00 ] cat 呼び出す
455 名前:453 mailto:sage [2008/02/13(水) 18:25:02 ] >>454 ありがとうございます。 catは盲点でした。無事解決しました。
456 名前:デフォルトの名無しさん [2008/02/13(水) 18:31:44 ] 配列のなかに配列を複数持っている場合 それらをうまく結合する手段ってないでしょうか? 具体的には以下のような感じです @array[1] = {aaa, bbb} @array[2] = {ccc, ddd} @array[3] = {eee, fff} このとき、一つの変数にまとめて {aaa, bbb, ccc, ddd, eee, fff} となるようにしたいです。 申し訳ないのですが、知恵を貸してください。
457 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 18:46:13 ] 544 :デフォルトの名無しさん:2007/05/12(土) 02:54:05 深さのある配列を左から順番に呼んでフラットな配列を作りたいんですが、 よい方法ご存知の方いませんか @a = ([1,2,3], [4,5,6], [[7,8],[9,0]]); @b = flatten(@a); # 1,2,3,4,5,6,7,8,9,0 546 :デフォルトの名無しさん:2007/05/12(土) 03:16:52 >>544 sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ } こんなんどうよ。
458 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:26:12 ] >>457 456です、回答ありがとうございます。 しかしながら、私が挙げた例の場合にはどのように用いればよいか分からず困っています。 ヒントだけでもいただけないでしょうか?
459 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:29:20 ] {}はハッシュだろ
460 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:31:12 ] >>459 理解できました、ありがとうございます!
461 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:42:53 ] Pgを使って(DBIじゃなく)複数スレッドから同時にDBアクセスを使用と思います。 DBへの接続は各スレッドで行います。 Perl自体はスレッドに対応していても、関連モジュールとかの対応状況がわかりません。 バージョンは以下の通りです。 Perl 5.8.8 libpg 2.1.1 PostgreSQL 8.1 ディストリビューションは、Debian etchです。 スレッドの方が子供の面倒が見やすそうなので、できればスレッドにしたいのです。
462 名前:デフォルトの名無しさん [2008/02/14(木) 01:19:43 ] で、自分では試したくないので、だれかヒマなヤツ、オレのかわりに試してくれんか。 オレは家でゴロゴロしてアニメ観るのに忙しいから。 ・・・とか?
463 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:27:23 ] いえ、アニメじゃないです。 アニメの実写劇場版です。
464 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:24:49 ] >>462 せっかくぼけてくれたところをマジレスすると、試して問題なかったからと言って、スレッドに対応しているとは限らないから困ってるんです。 たまたま動いているだけってことがあるし。
465 名前:デフォルトの名無しさん [2008/02/15(金) 09:03:33 ] perl5.10が普及するのっていつごろ?
466 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:25:02 ] >>464 その当たりの情報は、ソースやリリースノートを追うしかないと思う。 やたら古くてあまり参考にならないけど tp://homepage3.nifty.com/hippo2000/perltips/DBI/FAQ.htm#5_1_Can_I_do_multi_threading_wit
467 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:06:19 ] ActivePerlの5.10の最新版(ほかいくつかのバージョン)で、 ppm search (モジュール名) でモジュールをネットから探してくれないのですが、 何か指定が必要でしょうか。
468 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:59:34 ] >>467 5.8 と5.10ではバイナリ互換性がないので、単に5.10向けにビルドしたのがないと思われる。
469 名前:デフォルトの名無しさん [2008/02/17(日) 01:17:31 ] winで、perlからmysqlを使っているのですが、 insert into a(a) value("あ"); コマンドラインで打つとうまくいくのですが、perlのDBIではうまくいきません。助けてください。
470 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 03:10:36 ] >>469 向こうの(mysql)スレでも言われているように、mysqldのdefault-charsetは確認したか?
471 名前:デフォルトの名無しさん [2008/02/17(日) 09:58:05 ] はい、sjisになっていて、win なのでPerlで書いているソースもそうじゃないかと。
472 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:02:29 ] >>471 ほんじゃ、unpack()つかって、バイナリの並びを表示して確認してみるとか?
473 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:04:16 ] >471 最近の Perl は内部 UTF-8 だべ。
474 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:00:13 ] >>471 >>470 で聞いたのは、mysqldの’connect’と’client’のcharsetのこと。 mysqldのversionを明記してないけど、多分4.1か5.0だと仮定して、 perl-DBD-mysqlで接続したときの、default-charsetがちゃんと’sjis’なり’cp932’になってない。 (mysqldとDBD-mysqlを自前でコンパイルしてない限り) つうことでそこを確認、変更しましょう。 ちなみに>>469 で書いてるみたいに、コマンドラインのmysql.exeからLoginして確認した ’charset’関係は、あくまでもコマンドラインのmysqlからの接続時のみに効いてる状態なんでそれとは別。
475 名前:デフォルトの名無しさん [2008/02/17(日) 13:47:20 ] >>469 insert 以前にさ、select はうまくいくの? 初心者なら、簡単な事からはじめてみよう。 use utf8; use DBI; my $db = DBI->connect("DBI:mysql:以下省略・・・ $db->do('SET NAMES UTF8'); $id = 1; my $sql = "SELECT name,address FROM members WHERE id=$id;"; my $sth = $db->prepare($sql); $sth->execute or die DBI::errstr; $sth->bind_columns(undef, \(my($M_name,$M_address))) or die DBI::errstr; my $rc = $sth->fetch(); utf8::decode($M_name); utf8::decode($M_address); insert はこの逆をすればいいだけ。
476 名前:デフォルトの名無しさん [2008/02/17(日) 16:29:46 ] 設問1 f-e-d-c-b-a-0-a-b-c-d-e-f
477 名前:デフォルトの名無しさん [2008/02/17(日) 16:31:00 ] 設問2 9-8-7-6-5-4-3-2-1-X-1-2-3-4-5-6-7-8-9
478 名前:デフォルトの名無しさん [2008/02/17(日) 17:13:02 ] 以下の問題を定義しなさい。 1{"f" = "-f == f" && "+f == f"} 2{"9" = "-9 == 9" && "+9 == 9"} 3{構成文省略} "9" は "f" に等しく、また "-9" は "-f" に等しい "0" は "X" に等しいので "0" == "X" = "n" とする 先ず此の構成を "x,y,z && n" を成型にしなさい また "n" は "y" で在り "9…0…9" まで存在する しかし "n = y" の配列は"次の"配列 "9…0…9" を使用する事! 残された "9…0…9" は "1/3" の後の "1/4" で使うが? "n" == "0 = X" && "x,y,z" = "x,y,z" == "n/4" に為りますが構成は入り組んで居りますね?
479 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:17:15 ] 日本語が苦手なら英語でおk
480 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:19:52 ] どちらのお国のガイジンさんですか
481 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:26:21 ] 宿題は自分でやるか先生に聞きなさい。ためにならん。
482 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:26:35 ] いくらなんでも丸投げすぎワロタw
483 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:28:26 ] 解読できません>< 誰か和訳たのむ
484 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:52:46 ] >>476-478 くだらねぇ問題はここへ書け ver.3.14(57桁略)4592 science6.2ch.net/test/read.cgi/math/1197828000/
485 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 20:29:46 ] >>476 ん? >>477 え? >>478 パルプンテ
486 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:40:18 ] >>478 居りますよ
487 名前:デフォルトの名無しさん [2008/02/17(日) 22:24:11 ] おちんちんの傘のまわりに小さいギザギザがあるんですが 医者に見せたほうがいいですか?
488 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:28:07 ] >>487 このスレ的には大きなツブツブのほうが好まれますね 死ね
489 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:53:13 ] active perl をダウンロードしようと思い www.activestate.com/ にいったのですが 久々に訪れてみたら、 ずいぶん様子が違いダウンロードする場所がわかりません どこにあるのでしょうか
490 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:55:36 ] www.activestate.com/store/download.aspx?prdGUID=81fbce82-6bd5-49bc-a915-08d58c2648ca
491 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:58:52 ] >>490 即答ありがとうございます 助かりました
492 名前:デフォルトの名無しさん [2008/02/18(月) 23:48:34 ] XML処理用のマッピングファイルを以下を参考にして作成しました。 homepage3.nifty.com/hippo2000/perltips/xml/xmlenc.htm 作成したマッピングファイルは、規定のディレクトリに置けば良いのですが、 ローカルディレクトリに置いたまま使用したいと考えています。 任意のディレクトリをマッピングファイル検索パスに追加する方法はあるのでしょうか?
493 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:39:35 ] 中身見た?
494 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:14:27 ] $moji = 'a<>b<>c<>';
495 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:15:38 ] ミスです。 $moji = 'a<>b<>c<>';があって 2番目だけを切り取るいい方法ってありますか? 配列ならspliceみたいな
496 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:20:22 ] 配列にしてspliceすればいい。
497 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:52:37 ] $moji =~ s/^([^<>]+<>)([^<>]+<>)/$1/;
498 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:54:53 ] s/^((?:.*?<>){1})(?:.*?)(?:<>|$)/$1/;
499 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:59:54 ] s/qあwせdrftgyふじこlp. くぁwせdrftgyふじこlp;/;
500 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:39:18 ] >>495 「切り取る」とは 除去なのか $moji =~ s/(?<=<>).*?(?=<>)//; # a<><>c<> $moji =~ s/(?<=<>).*?<>//; # a<>c<> 取得なのか $value = (split /<>/, $moji, 3)[1]; # $value = 'b';
501 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:15:50 ] Windows Excel から Perl スクリプトを実行し、その結果を受け取ることはできますか? 目的は Perlスクリプトに GUIラッパーをかぶせることです。 処理結果を Excel に渡してグラフ表示することなども考えてますので、 その意味でも Excel から一貫して操作できれば、と考えています。 具体的には Web サーバからダウンロードした Apache の access log を 見やすく解析したいと思っています。 業者さんの設置してくれた アクセスログ解析CGI では得たい情報が得られないので、自分でなんとかしようと思いました。 実行するのは会社のパソコン上です。Perl の実行環境は用意しようと思っていますが、 それ以外のローカルサーバでの CGI とか PHP とかは今のところ考えていません。 環境は WindowsXP、Excel 2003 です。 どうぞよろしくお願いします。
502 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:21:42 ] Excelスレ池
503 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:45:24 ] Perlで解析結果をファイルに書き出して Excelのマクロでグラフにすればいいんじゃないかな
504 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:46:10 ] え、Perlいらなくね?
505 名前:>>501 mailto:sage [2008/02/21(木) 22:11:59 ] レスありがとうございます。 >>502 やはりスレ違いでしたか…Excel VBAスレのテンプレ読んでこちらに来てしまったのですが、 書き込んでからやっぱりこっちのスレは違うかもと思いました。申し訳ありませんでした。 >>503 Perlを実行するのを、DOS窓からコマンドを打ち込むのではなく、例えば Excel の マクロの中から実行できないかと思いまして…。 >>504 Excel の VBAでスクリプトを作りかけたんですけど、簡単な置換をさせただけでも 結果が帰ってくるまでに5分ぐらいかかってしまいました。それでPerlに変えたんです。 もっとも実行させたのがPPCのMac上だったので、Windowsだったらもっと早いとは思うのですが…。 ではExcelのスレに移動することにします。 レスいただきどうもありがとうございました。
506 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 09:29:51 ] 携帯のアクセス制限はどうすれば良いの? IPアドレスだと毎回変わるんだが
507 名前:デフォルトの名無しさん [2008/02/22(金) 14:50:54 ] perlで、「iostat -x」の出力結果の ---------------------------------------------------- extended device statistics device r/s w/s kr/s kw/s wait svc_t %b twed0 6.3 35.9 81.1 565.8 0 9.8 7 ---------------------------------------------------- の中の、「81.1」と「565.8」だけ標準出力したいのですが、 試行錯誤したのですが、うまくいきません。 最後に試したのが、以下のスクリプトですが、 何も表示されずにちょっとお手上げです。 どなたかご指摘頂けないでしょうか? どうぞお願いします。 ---------------------------------------------- #!/usr/bin/perl open(FILE, "iostat -x"); while (<FILE>) { if (/^twed0?\s+?[0-9\.]+?\s+?[0-9\.]+?\s+?([0-9\.]+)?\s+?([0-9\.]+)?\s+?[0-9]+?\s+?[0-9\.]+?\s+?[0- 9]+$/) { print "$1\n"; print "$2\n\n\n"; } } close(FILE); ----------------------------------------------
508 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:55:33 ] open(FILE, "iostat -x |")
509 名前:デフォルトの名無しさん [2008/02/22(金) 15:01:39 ] >>508 アドバイスありがとうございます。 >>508 さんの方法でもやってみたのですが、やはり何も表示されませんでした。 何がまずいんだろう・・・
510 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:11:34 ] ……
511 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:15:43 ] >>507 最後の改行コードは大丈夫?
512 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:25:30 ] chomp汁!
513 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:35:15 ] kwsk見てみたが正規表現が間違ってるっぽいな もうちょっと見てみるわ
514 名前:507 [2008/02/22(金) 18:56:36 ] >>511 >>512 >>513 お手数お掛けしてすみません。 私は、いつもphpを使っているので、phpのperl互換の正規表現で色々と試行して、 phpでは正規表現の部分で正常にできました。 どこが動かないのかデバックコードを書いてみました。 ---------------------------- #!/usr/bin/perl open(FILE, "iostat -x |"); print"-"; while (<FILE>) { if ("/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i") { print "$2\n"; print "$4\n\n\n"; } print "*"; } close(FILE); ------------------------------------- 上のスクリプトで実行すると、出力結果が 「- * *」(改行つめました)が出力されます。 シェルから、「iostat -x」とたたくと、前述ようにきちんと出力します。 たぶん、if文の使い方が悪いと思うのですが、 どのようにやるのが正しいのでしょうか?多分、初歩的なことかも? 引き続き、宜しくお願いします。お手数お掛けします。
515 名前:507 [2008/02/22(金) 18:58:41 ] あ!、改行が複数飛び飛びに入っている実行結果から$2と$4は空文字になっているのだと思います。 でも、そこからどう解決できるのかが分かりません。う〜ん。
516 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:16:33 ] >>514 if(〜)は何でdouble quoteしてるの?
517 名前:507 [2008/02/22(金) 19:21:21 ] >>516 これは初めてつけていなかったのですが、試行錯誤していて試しにつけてみたら、 if文の中を実行ができるようになりました。(複数改行が出力されます) 本来はつけないのが正しい記法なのでしょうか? そうだとしますと、ますます混乱してきました。
518 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:27:11 ] >>517 "で括った文字列は空文字列でなければ必ず真と判断される。だから意図した条件を満たさない行も出力されてるでしょ 付けちゃだめだよ 今iostatが使えない環境なので>>507 のデータをファイルに入れているんだが、これはきっと期待通りの動作だろう #!/usr/bin/perl open(FILE, "iostatdata.dat"); print"-\n"; while (<FILE>) { chomp; if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) { print "\$2 = $2\n"; print "\$4 = $4\n"; } print "*\n"; } close(FILE);
519 名前:507 [2008/02/22(金) 19:44:14 ] >>518 わざわざコードまで書いて下さって、本当に親切にどうもありがとうございました。 早速試してみたのですが、う〜ん...結果はうまくいきませんでした。 ●iostatの実行結果 ------------------------------------------------------------------------------ www# iostat -x extended device statistics device r/s w/s kr/s kw/s wait svc_t %b twed0 5.1 37.6 78.3 598.9 0 10.5 7 ------------------------------------------------------------------------------
520 名前:507 [2008/02/22(金) 19:44:38 ] ●perlでの実行結果 ---------------------------------------------------------------------------- #!/usr/bin/perl open(FILE, "iostat -x |"); print"-"; while (<FILE>) { # if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) { # print $1 . "\n"; # print $4 . "\n\n\n"; # } chomp; if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) { print "\$2 = $2\n"; print "\$4 = $4\n"; print "*"; } print "*\n"; } close(FILE); ------------------------------------------------------------------------------ # /home/test/test.pl -* * * ------------------------------------------------------------------------------
521 名前:507 [2008/02/22(金) 19:45:41 ] ●【参考】phpの参考結果 ---------------------------------------------------------------------------- $word = "twed0 5.1 37.6 78.3 598.9 0 10.5 7"; $word = preg_replace("/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/", "$2--$4", $word); echo "->". $word . "<-"; ---------------------------------------------------------------------------- ->37.6--598.9<-
522 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:29:58 ] >>506 各社の携帯電話が使うIPアドレスの範囲は公式ページに載っているので、それで制限することはできる。 特定の携帯電話をはじくのは無理かな。同じ機種使ってれば、区別のしようがないし。端末IDを送信してれば区別できるけど。
523 名前:デフォルトの名無しさん [2008/02/22(金) 20:35:23 ] じゃオレも。 ●>>521 のphpをそのままperlの文法に書き換えただけでの結果 ------------------------------------------ $word = "twed0 5.1 37.6 78.3 598.9 0 10.5 7"; $word =~ s/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/$2--$4/; print "->". $word . "<-"; ------------------------------------------ ->37.6--598.9<- ほらちゃんと>>521 と同じ結果が出たぞ。 何が違うのか、よ〜く見てみろ。 「問題の切り分け」 って習わなかったのか? phpだろうがperlだろうがjavaだろうが、 どんな言語でもデバッグの手法は同じだよ。 もういちど基本に帰れ。
524 名前: ◆TWARamEjuA mailto:sage [2008/02/22(金) 21:41:04 BE:1524672-2BP(7072)] つ s
525 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 22:58:53 ] >506 やっぱ端末情報を拾うのが一番じゃないか?
526 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:38:59 ] >>507 ,523 x フラグつけてくれ。読みにくくてかなわんw
527 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:25:03 ] そもそも正規表現で拾う必然性すらない。 #!/usr/bin/perl -w use strict; # open IOSTAT, 'iostat -x |' or die $!; *IOSTAT = *DATA; scalar <IOSTAT>; # extended device statistics my @col = split /\s+/, <IOSTAT>; my %v; $v{'device'} eq 'twed0' and print "$v{'kr/s'}\n$v{'kw/s'}\n\n\n" while @v{@col} = split /\s+/, <IOSTAT>; close IOSTAT or die $!; __DATA__ extended device statistics device r/s w/s kr/s kw/s wait svc_t %b twed0 6.3 35.9 81.1 565.8 0 9.8 7 twed1 5.1 37.6 78.3 598.9 0 10.5 7
528 名前:デフォルトの名無しさん [2008/02/23(土) 15:19:23 ] それを言っちゃオシマイよ
529 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:35:32 ] // データを1行読み出す。 function GetNextData(){ if( $line = fgets($this->m_file_hd, 1024) ){ $line2 = split($this->m_pause_chr, $line); $ans = new Line(); $ans->SetData($line2[0], $line2[1]); }else{ $ans = ""; } return $ans; } 変数名の最後に数字使うのは初心者だろ? もしコード拡張で数値計算が入ったら紛らわしい
530 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:04:21 ] だって、変数名の最初に数字がつかえないんだもん。
531 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:22:52 ] 誤爆か? 考え込んでしまった
532 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:25:43 ] evalって、エラーがなければ$@が空文字列であることが保証されるとのことですが、 evalのリターンはエラーがあった場合、undefであることが保証されますか? definedな戻り値と$@が両立するケースはありますか?
533 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:18:31 ] >>532 <q cite="perldoc.jp/docs/perl/5.10.0/perlfunc.pod#item_eval_BLOCK "> 構文エラーや実行エラーが発生するか、die 文が実行されると、 eval の値として未定義値が返され、$@ にエラーメッセージが設定されます。 エラーがなければ、$@ は、空文字列であることが保証されます。 </q>
534 名前:530 mailto:sage [2008/02/24(日) 11:01:47 ] >>531 ごめん。ぼけてみたんだけど、はずした。
535 名前:デフォルトの名無しさん [2008/02/24(日) 11:42:40 ] >>533 どうもです!構文エラーと実行エラー以外に$@が設定されるエラーはないと 考えていいんですよね??素人丸出しな質問ですが。
536 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:15:54 ] >>535 search.cpan.org/dist/perl-5.10.0/pod/perlvar.pod#EVAL_ERROR <q cite="perldoc.jp/docs/perl/5.6.1/perlvar.pod "> 最後の eval() 操作子による Perl の構文エラーメッセージです。 </q>
537 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:02:29 ] >>534 いやまあ、あなたのことじゃないんで気にしないで
538 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 02:30:35 ] コンパイル時にパッケージ名とサブルーチン名を区別できない可能性があるから、 サブルーチンの名前には大文字を使わないと聞いたことがあるのですが本当でしょうか? また実際に区別できないことがあるのは、どういった使い方をした場合でしょうか?
539 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:05:25 ] >>538 コンパイラが大文字小文字でパッケージ名と関数名の 区別を付ける事はないので嘘。 perldoc.jp/docs/perl/5.8.0/perlstyle.pod > 実際に区別できないことがある 人間が区別を付けにくいという意味では func_or_method FuncOrClassOrFh @arg;
540 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 15:03:13 ] あ
541 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:07:27 ] >>539 回答ありがとうございます。 一般的にパッケージ名に大文字を使うため、サブルーチンの名前にも大文字を使うと、 パッケージ名とサブルーチン名が重複する可能性があり、 重複するとコンパイラが区別ができないことがあるのかと、 疑問に思ってるのですが、これについてはどうでしょうか?
542 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:50:13 ] 「名前空間」の勉強してこいよ
543 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:11:44 ] ?
544 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:01:02 ] 重複して困るのはサブルーチン名でなくラベルやファイルハンドル。 #!/usr/bin/perl -w use strict; package Foo; sub Foo { join '', @_ } package Bar; sub Bar { print 'Bar!' } package main; # これはOK # print Foo Foo Foo => "\n", Foo->Foo("Foo!\n"); # FooFoo\nFooFoo!\n # Bar Bar; __END__ Bar! # パッケージ名と同名のファイルハンドル # open Foo, '>./Foo.txt' or die $!; # Foo->Foo('Foo!'); # ここで混乱して実行時エラー # close Foo; __END__ # goto EXPR を goto LABEL で解釈してコンパイルエラー # for (1..5) { $_ > 2 ? goto Foo Foo 'Foo' : print "$_, " } # FooFoo: print 'foo!'; __END__ # 優先順位の明確化で解決 # for (1..5) { $_ > 3 ? goto(Foo Foo 'Foo') : print "$_, " } # FooFoo: print 'foo!'; __END__ 1, 2, 3, foo!
545 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:45:04 ] >>544 非常に分かりやすく解説してくださってありがとうございます。 perl.g.hatena.ne.jp/bosh/20060409 こちらで書いてあるのは間違いということで、理解しました。
546 名前:デフォルトの名無しさん [2008/02/26(火) 21:59:27 ] 素人が趣味で書いたホームページを鵜呑みにされても・・・
547 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:18:46 ] 何かあるのかと思って確認のために聞いただけじゃないか
548 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:27:01 ] 素人かどうかなんてわからないだろ
549 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:28:24 ] わからないなら素人として扱うのが安全だろ
550 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:18:38 ] じゃあここでレスしてるのも素人ばっかりだなw
551 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 16:12:38 ] お前はその前提で喋ってればいいんじゃね? 馬鹿だなーって思われるだけだけど。
552 名前:デフォルトの名無しさん [2008/02/27(水) 16:23:09 ] わかった。>>551 は超素人ってことで。
553 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 16:42:13 ] 笑うところだろw まぁ鵜呑みにするな、っていうのは真理だな
554 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:22:22 ] 素人です。教えてください。 何もわかりません。動きません。 絶対プログラムは正しいので、Perlのバグだと思うのです。 ・・・・。
555 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:32:58 ] どっかのコピペか?
556 名前:デフォルトの名無しさん [2008/02/28(木) 09:41:09 ] 質問です。 func_hoge() というサブルーチンがあります。 このサブルーチンは、内部でエラーが起こった場合のみ、エラー番号やエラーメッセージを返してきます。 何も問題なければ 0 やら空文字列が返ってくるとします。 func_hoge()を呼び出すときは、 my $err = func_hoge(); if ($err) { die "Error func_hoge [$err]"; } というように返り値を保持しておき、 エラーがあれば、その時のエラー番号(可能であればサブルーチン名などの目印も)を表示したい。 これはこれで全く問題ないのですが、func_hoge()の呼び出し箇所が増えると エラー格納用の一時的な変数が増えてしまいますし、何より面倒です。 何か楽できる方法ありませんか?
557 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 11:00:53 ] func_hoge de die
558 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 11:13:37 ] func_hoge()の中でuse Carpしてcroakすればいいんじゃね? die させないときはeval{}で囲えばいいし。
559 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 11:46:45 ] サブルーチンの中を弄らないと無理かー。 呼び出し側だけで何とか小手先の変更で出来ないかなとか考えてた。ありがとう。
560 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 12:41:38 ] ん? push @err, func_hoge(); みたいなもんでいいのかな。
561 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 12:53:34 ] 新しいサブルーチン作ればいいじゃん。
562 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 14:44:00 ] if (my $err=func_hoge()) { die "Error func_hoge [$err]"; }
563 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:13:15 ] >560 状況にもよるけど、サブルーチンを呼ぶたびにエラー判定しなきゃならないような類だと 結局手間は変わんないかも。 >561 最終的には多分そうなると思う。 >562 やっぱそれが一番スマートなのかなあ。
564 名前:デフォルトの名無しさん [2008/02/29(金) 00:37:04 ] Perlってパースした後の構文木をプログラムで書き換えることはできないの?
565 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 03:20:56 ] dieで死ぬだけなら再利用しちゃえばいいんじゃないの?w
566 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 09:02:53 ] >>564 目的は?
567 名前:デフォルトの名無しさん [2008/02/29(金) 10:51:40 ] Perl の localtime 関数はエポックからの秒数をローカル時刻の年月日に 分解してくれますね。これとは逆に、ローカル時刻の年月日を エポックからの秒数に変換するにはどうしたらよろしいでしょうか?
568 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 11:05:27 ] timelocal
569 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 13:23:58 ] 一度くらい自分で作ってみるのも悪くないけど(簡単だから)、 出来上がったらそれ以降は>>568 を使っておけばいいな。
570 名前:デフォルトの名無しさん [2008/02/29(金) 14:22:22 ] Perl で split 関数が返す配列を、一度配列に入れずに、すぐに配列参照として 受け取ることはできますか? $ar = split(/,/, $str); $ar_ref = \@ar; じゃなくて $ar_ref = split(/,/, $str); のようにしたい。 ↓こんなのじゃうまくいかなかった。 $ar_ref = \split(/,/, $str);
571 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 14:38:52 ] anonymous array reference constructor
572 名前:デフォルトの名無しさん [2008/02/29(金) 14:43:44 ] >>571 つまり、こういうことですか? $ar_ref = [ split(/,/, $str) ]; でも、これだと、配列の要素をコピーすることになりそうで (なりますよね?) 無駄ではありませんか?
573 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 14:45:55 ] >>572 実際の動作がどうなるのかはソースを読む。 読みたくないなら、明らかにコピーしそうなperlコードとBenchmarkで比較。
574 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:05:51 ] >>572 最適化されるよ。
575 名前:デフォルトの名無しさん [2008/02/29(金) 16:29:22 ] >>574 証拠はある?
576 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:39:17 ] 証拠がソースだったら読むのか?
577 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:47:30 ] 他人に頼りすぎだ。 パフォーマンスが気になるなら、ちょっと確かめてみればいい。 こんなコード断片が書けないのなら、パフォーマンスなど気にするだけ無駄。 use Benchmark qw(timethese); my $source = join(',', ('abcdefg')x80000); my $result_ref; timethese(100, { temp => sub { my @temp_array = split(/,/, $source); $result_ref = \@temp_array; }, bracket => sub { $result_ref = [ split(/,/, $source) ]; }, none => sub { split(/,/, $source); }, }); Benchmark: timing 100 iterations of bracket, copy, none, temp... bracket: 9 wallclock secs ( 8.94 usr + 0.00 sys = 8.94 CPU) @ 11.19/s (n=100) none: 6 wallclock secs ( 6.76 usr + 0.00 sys = 6.76 CPU) @ 14.80/s (n=100) temp: 15 wallclock secs (14.27 usr + 0.00 sys = 14.27 CPU) @ 7.01/s (n=100)
578 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 17:00:25 ] >>575 証拠は俺の脳内。 信じられないなら自分でソース読もう。
579 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 17:54:31 ] >>577 void コンテキストで split 使うと @_ に入るので注意な。
580 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 19:05:26 ] lala-zコンテキストなら?
581 名前:ジミー [2008/02/29(金) 21:41:12 ] $str = "a,b,"; @ar = split(/,\n/, $str); print join(',', @ar); これを実行すると a,b と表示されます。 つまり、split は末尾の空文字列を取り出してくれないようです。 末尾の空文字列を取り出して、このコードが a,b, と表示させるように するための簡単な方法ってありませんかね。 (もちろん愚直に工夫すれば何とでもなるが、スマートな解がほしい)
582 名前:ジミー [2008/02/29(金) 21:41:59 ] >581 コード間違えた。(実験してたコードにしてもた。) × @ar = split(/,\n/, $str); ○ @ar = split(/,/, $str);
583 名前:ジミー mailto:sage [2008/02/29(金) 21:46:48 ] 解決した。 @ar = split(/,/, $str, -1); ですね。
584 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:48:12 ] print join ',', split /,/, q/a,b,/, -1;
585 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:44:11 ] >>566 特にないけど、Perlならそういう面白いインターフェイスが用意されてそうだなと思ったまでで
586 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:06:48 ] 麻雀なのに、娘とか嫁とか家族とかw 乞食は想像を絶するなw
587 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:07:14 ] スマン、誤爆
588 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 09:16:39 ] 色々と妄想させてくれる。 世の中には「義妹が最強だろ」という誤爆レスが元になって作られたゲームとかあるからな。 人間の妄想力ってのは凄いもんだぜ。
589 名前:デフォルトの名無しさん [2008/03/02(日) 10:27:48 ] おにぃちゃん、ヤメテ!
590 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 10:48:55 ] ヘッヘッヘ、いいじゃねぇか ポン ヘッヘッヘ
591 名前:デフォルトの名無しさん [2008/03/02(日) 11:09:57 ] Active Perl 5.10.0 用の DBD-mysql ってどこにあるの?
592 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:48:26 ] >589-590 エロゲじゃねーよw
593 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:23:27 ] >>591 cpan.uwinnipeg.ca/PPMPackages/10xx/
594 名前:591 [2008/03/02(日) 21:46:50 ] >>593 ありがとう。無事インストできたよん。
595 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 09:11:40 ] インスト
596 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 09:43:34 ] 泣いても笑っても、お前のまんじゅうは無いよ。
597 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:28:09 ] Wiki文法でのテキスト整形で悩んでいます。 改行含めた長い文章が $i に入ってます。 文章中のリンクアンカーに相当する部分はWikipediaなどでお馴染みの [[テキスト]] という感じで書かれています。 これを $i =~ s/\[\[(.+?)\]\]/<a href="$1">$1<\/a>/g; で変換しているのですが、できれば <a href="$1"> の中のほうの$1をURLエンコードして収めたいのです。 URLエンコードのサブスクリプトはこんな感じです。 sub url_enc { local($_) = @_; s/(\W)/'%' . unpack('H2', $1)/eg; s/\s/+/g; $_; } よろしくお願いします。
598 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:49:12 ] すみません、補足です。 CGIにはインフォパスか引数で渡します。 <a href="hoge.cgi?$1"> こんな感じで。
599 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 17:31:00 ] サブルーチンに置換部分をまとめて、 $i =~ s/\[\[(.+?)\]\]/&url_enc($1)/eg;
600 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 17:58:47 ] そっか!e修飾子を利用した時は置換部分は関数以外は入れたらダメなんですね。 $i =~ s/\[\[(.+?)\]\]/<a href="&url_enc($1)">$1<\/a>/eg; だとエラーが出るんで何でだろうとずっと思ってたんです。 ありがとうございます。勉強になりました。
601 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 18:25:15 ] >>600 自分で '%' . unpack('H2', $1) なんてのを入れてるじゃん。 sub html_escape { my $str = $_[0]; $str =~ s/&(?!(?:\w+|#(?:[Xx][0-9A-Fa-f]+|[0-9]+));)/&/g; $str =~ s/([\x00-\x09\x0B\x0C\x0E-\x1F"'<>\x7F])/${ \ ord $1 };/g; $str; } sub uri_escape { my $str = $_[0]; $str =~ s/%(?![0-9A-Fa-f][0-9A-Fa-f])/%25/g; $str =~ s/([\x00-\x20"'<>\\^`{|}\x7F-\xFF])/ sprintf '%%%02X', ord $1 /eg; $str; } $i =~ s{ \[\[ (.+?) \]\] } { my($url, $face) = ($1, $1); $url = uri_escape($url); $face = html_escape($face); qq|<a href="$url">$face</a>|; }egx;
602 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 18:40:50 ] >>601 すみません、 実はurl_encは誰かから教えてもらったもので丸写しなんです ^_^ でも今回のことでやっともろもろ判りました。 コード、参考になります(というかありがたくいただきます)。 ありがとうございます。
603 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 05:49:41 ] JavaのプログラムからCGIを実行しようとしたのですが、302エラーが返されます。 何故なんでしょうか?
604 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 10:21:39 ] >>603 302 はエラーじゃないし Perl の話でもない。 www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec10.3 CGI: Common Gateway Interface part 13 pc11.2ch.net/test/read.cgi/php/1126436361/
605 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 10:22:39 ] Moved Temporarily
606 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:38:15 ] >>604-605 パーミッションの設定をしたら動きました;; お騒がせしました
607 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 15:23:38 ] perlのuntil文っていらないと思うんですけど、皆さんどんなときに使ってますか?
608 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:30:42 ] 使わなきゃいいじゃん
609 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:00:16 ] while (! hoge)よりも直感的に書ける場合もある気がする とくに後置したときに英文っぽくておさまりがいいような
610 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:23:51 ] while ( !( ... || ... && ... || ...) ) とかになったらさすがに使うw
611 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:26:43 ] あー、あと成功したら0エラーならエラーの種類が1以上って関数が 成功したらとにかく実行って時とかに == 0 とかやらなくて済むとか。
612 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 18:07:48 ] >>609->>611 なるほど。参考になりました。 untilも使い道はいろいろあるんですね。
613 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 18:32:27 ] 意味的に「〜になるまで続ける」って感じの時も until のがわかりやすいかも
614 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 18:37:39 ] >>613 確かに。これは考えたことなかったな。
615 名前:デフォルトの名無しさん [2008/03/06(木) 02:27:57 ] XSでCライブラリを使ったモジュールを作ったが、 それが$HOME/local/libのライブラリを使っていて CGIにLD_LIBRARY_PATHが設定できないのでモジュールで使っている.soが読めない。 $ENVとuse Envでやったが、無視されるみたいだし 共有サーバでhttpdがsuExecで動いているので.htaccessでSetEnvすることもできない。 DynaLoaderがロードする.soがリンクしているsoのパスを指定できる方法ある?
616 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 12:16:11 ] >>615 ldの-Rオプションでバイナリに埋め込むのはどう?
617 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 19:32:32 ] >>615 前スレの570〜580あたりで書き込みした者ですが、 DynaLoader.pmがLoadするだけならば、 use DynaLoader; @DynaLoader::dl_library_path に、対象のPATHを放り込んでやればLoad出来ます。 その{perl_module}.soがよその(/use/lib,/lib以外の)ライブラリをロードするようにコンパイルされていたら、 多分 use した時点でエラーになります。