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]; } というコードを書いてるんですが、もっと奇麗な書き方はありませんか?