Perlについての質問箱 30箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/03/14(水) 22:54:12"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3
前スレ
Perlについての質問箱 29箱目
http://pc11.2ch.net/test/read.cgi/tech/1166708139/
リンク集は>>2-3
過去スレは>>4
0002デフォルトの名無しさん
2007/03/14(水) 22:55:02Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.8/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0003デフォルトの名無しさん
2007/03/14(水) 22:55:32CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん
2007/03/14(水) 22:56:031 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/
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/
0005デフォルトの名無しさん
2007/03/14(水) 23:28:350006デフォルトの名無しさん
2007/03/14(水) 23:33:020007デフォルトの名無しさん
2007/03/15(木) 00:13:380008デフォルトの名無しさん
2007/03/15(木) 09:55:340009デフォルトの名無しさん
2007/03/15(木) 11:27:42前スレだけでいいんじゃないかと思うが。
0010デフォルトの名無しさん
2007/03/15(木) 12:02:31---------------------------------------------------------
# 【Perl 日本語処理の基礎の基礎】
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
# 文字コードの条件が異なる場合には編集が必要です。
# 編集の仕方はご自分で勉強するか、このスレで質問して下さい。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
# 次に、あなたが実行したい処理の内容を入れて下さい。
print "やあ!\n";
sleep(1);
0011デフォルトの名無しさん
2007/03/15(木) 12:38:080012デフォルトの名無しさん
2007/03/15(木) 12:56:560013デフォルトの名無しさん
2007/03/15(木) 20:59:500014デフォルトの名無しさん
2007/03/15(木) 21:49:50テンプレ化することで、くだらない質問が減るのなら十分意味があることだと思う。
0015デフォルトの名無しさん
2007/03/15(木) 22:28:23これじゃあ結局変わらないんじゃないか。
># 上記は、あくまで文字処理がわからない人のためのおまじないです。
># 上記以外のことをやろうと思ったら、自分で勉強してください。
わからんやつに、手取り足取り説明してもやっぱりわからん。
こっちで動くように書き直した方が100倍早い。
Cのポインタみたいな状況になってる。
0016デフォルトの名無しさん
2007/03/15(木) 22:42:070017デフォルトの名無しさん
2007/03/15(木) 22:43:560018デフォルトの名無しさん
2007/03/15(木) 22:48:47あんたらはどうせバカ以前だろ。
あれが今となっては誤解を引き起こす要因になっていることすらわかっていない。
0019デフォルトの名無しさん
2007/03/15(木) 23:14:570020デフォルトの名無しさん
2007/03/16(金) 00:19:43多分、>>18は、「Perl5.8 でもJcode.pm を使って文字コードを変換しなければならない」
と誤解したのではないだろうか。
初心者は、回答者が>>10のように回答できるような質問をすることすらできないのが現実。
前スレの>>68-71 なんか見てると、悲惨だね。
この点を解説している入門書も少ないと思うし、テンプレに入れてやってもいいんじゃないの?
0021デフォルトの名無しさん
2007/03/16(金) 00:48:59皆さん使ってますか?どんなときに使うか教えてください
0022デフォルトの名無しさん
2007/03/16(金) 17:39:12ttp://d.hatena.ne.jp/naoya/20060109/1136812096
ttp://d.hatena.ne.jp/tociyuki/20060110/1136910241
0023デフォルトの名無しさん
2007/03/16(金) 17:52:52・・・
return (\@a, \@b, \@c);
}
(@a, @b, @c) = func();
ってやると全部@aに合体してるんだけど
どうすればいいの?
0024デフォルトの名無しさん
2007/03/16(金) 17:53:400025デフォルトの名無しさん
2007/03/16(金) 18:30:51002623
2007/03/16(金) 20:32:440027デフォルトの名無しさん
2007/03/16(金) 22:56:12print OUT reverse @data;
メモリに入りきらない巨大csvファイルを上のように
逆順にするにはどうすればいいでしょうか?
0028デフォルトの名無しさん
2007/03/16(金) 23:06:510029デフォルトの名無しさん
2007/03/16(金) 23:57:22http://www.din.or.jp/~ohzaki/perl.htm#File_Reverse
0030デフォルトの名無しさん
2007/03/18(日) 04:31:05プロセスの終了を待たずにhoge.exeを起動して
次の処理へと移りたいのですが、どうすればいいのでしょうか?
&routine;
system('hoge.exe'); # ここで終了を待ちたくない
&routine2;
0031デフォルトの名無しさん
2007/03/18(日) 04:42:090032デフォルトの名無しさん
2007/03/18(日) 06:32:23スカラーの場合だと、こんな感じの関数で。
sub Del {
my $v = $_[0];
$_[0] = undef;
return $v;
}
0033デフォルトの名無しさん
2007/03/18(日) 06:40:08system('start hoge.exe');
0034デフォルトの名無しさん
2007/03/18(日) 11:33:47ない。
0035デフォルトの名無しさん
2007/03/18(日) 13:50:21第一引数に1を。
ActivePerlだけだっけ。
0036デフォルトの名無しさん
2007/03/18(日) 14:22:24Win32::Processは?
0037デフォルトの名無しさん
2007/03/18(日) 16:01:200038デフォルトの名無しさん
2007/03/18(日) 16:42:21あってもどうせ過疎る。
だからここでけっこう雑談もしてる。
0039デフォルトの名無しさん
2007/03/18(日) 17:16:31perl って普及してるのにそう言う人あまり居ないんだね
道具として使っている人がほとんどなのかな
0040デフォルトの名無しさん
2007/03/18(日) 17:29:290041デフォルトの名無しさん
2007/03/18(日) 17:52:44本スレがあれば変な分散抑えられるかもだけど…。でもやっぱ過疎りそうだね。
0042デフォルトの名無しさん
2007/03/18(日) 18:18:380043デフォルトの名無しさん
2007/03/18(日) 18:43:54ありがとうございます。
一瞬演算子レベルであっても良さそうな気はしたが、あってもあまり使わないか。
0045デフォルトの名無しさん
2007/03/18(日) 22:36:23再度繋ぎなおしたいのですが、接続が切れると、
「No active connections left, exiting...」という表示と共に
スクリプト自体が死んでしまいます。
どうすれば接続が切れたときに再度繋ぎ直すことが出来ますか?
0046デフォルトの名無しさん
2007/03/19(月) 00:20:460048デフォルトの名無しさん
2007/03/20(火) 16:10:23print 'hello!'; だけでもメモリを 20M くらい使うようになりました。
サーバのメモリが 2G のため、同時に 100 アクセスくらいあると
サーバがかなり重くなってしまいます。
サーバのスペックを上げることになったのですが、
同時に消費メモリも下げろと言われています。
CPAN のモジュールは外せないのですが、
ソフトウェア的に何か解決策はありませんか?
0049デフォルトの名無しさん
2007/03/20(火) 16:13:480050デフォルトの名無しさん
2007/03/20(火) 16:17:42いろいろあるだろうけど、コードの再利用で量を減らすとか、
容量の大きい配列は、他の変数への複製を一切せず、全て
参照等で解決するとか。
0051デフォルトの名無しさん
2007/03/20(火) 16:21:240052デフォルトの名無しさん
2007/03/20(火) 16:35:110053デフォルトの名無しさん
2007/03/20(火) 18:44:580054デフォルトの名無しさん
2007/03/20(火) 18:53:15例えばソケットを作ってから新規スレッドを作った場合、ソケットも2つ存在し、
my $sock = IO::Socket::INET - > new(attributes);
my $thread = threads -> create(\&example);
$thread -> detach;
$sock -> close();
この場合、生成されたスレッドからはまだソケット利用できるということでしょうか?
ソケットの実体がいまいち掴めてないので余計に混乱してしまいました・・・
0055デフォルトの名無しさん
2007/03/20(火) 20:04:040056デフォルトの名無しさん
2007/03/20(火) 20:32:31配列をサブルーチンへ渡したりサブルーチンから返したりする場合に、
複数の配列ではなく(1つのリストにまとめられる心配がない)、
大きくもない配列の場合だったら、
そのまま渡したり返したりした方が
ほとんどパフォーマンスが変わらない上にコードの見通しが良くなったりしますか?
0057デフォルトの名無しさん
2007/03/20(火) 20:43:08再度勉強してきます。有難うございました。
0058デフォルトの名無しさん
2007/03/20(火) 22:10:03???
一つのリストにまとめられない心配がない、じゃなくて?
0059デフォルトの名無しさん
2007/03/20(火) 22:44:25そりゃあ使わないで済むなら、リファレンスなんて使わないほうがシンプルになるだろうね。
でも、後で「やっぱり大きな配列を扱うようにしたい」とか「複数の配列を受け取りたい」とか
思った時の事を考えると、あらかじめリファレンス受け取りにしといた方が、少ない変更で済んで
互換性を保ちやすいのは確かだと思うよ。
006050
2007/03/20(火) 23:00:32先のメモリ最適化は、perlみたいな高級言語(BASICとか)では
できる事には限界があるでしょね。
メモリの解放だってできないすぃ。いかに使わないか、なのかな。
006156
2007/03/21(水) 07:11:38自分の書き方がまどろっこしくてごめんなさい
●複数の配列ならまとめられてしまうので、リファレンスのリストで渡す・返すのは必須
●考えていたサブルーチンでは、複数の配列を渡さない・返さない
= リストがまとめられる心配がないので、リファレンスを使わず無精でウマー
と考えていました
>>59-60
サンクスです
短期的には何はともあれプロファイラで見るか、という勢いだったのですが、
中長期的な視点も大事ですね
ループで回しているようなサブルーチンだとかだと、
塵も積もれば……にもなりそうですので、節約することにします
0062デフォルトの名無しさん
2007/03/21(水) 14:03:20プロセス間通信を使うのがいいんじゃないかな。
モジュールを呼び出して実行するプロセスを一つ立ち上げて、
他のプロセスはこのプロセスと通信して実行結果をもらうようにする。
0063デフォルトの名無しさん
2007/03/21(水) 14:07:03MP3::InfoモジュールがどうもShiftJISを想定してないのかどうかは知りませんが、
とにかくID3v1(エンコードはShiftJIS)で曲名など、日本語を含んだ文字列を取得すると
utf8フラグを持っているのに中身はShiftJISという訳の分からない文字列が出ます。
そしてGuessでfrom_toでutf8に変換しようとすると、
iso-8859-1 or utf8 at C:/Perl/lib/Encode.pm line 186
上記のエラーで止まってしまいます。Jcodeのgetcodeでもutf8と判別されました。
これを、通常のShiftJISの文字列にするにはどうすれば良いでしょうか。
ID3v1にShiftJIS以外の文字列が入るかどうかは置いといて、
色々やって通常のShiftJISの文字列にしようと試みたのですが、
激しい文字化けに見舞われたり、だめでした。
どうか、お力をお貸しいただけませんでしょうか。宜しくお願いします。
0064デフォルトの名無しさん
2007/03/21(水) 14:54:56書いてあるから
006563
2007/03/21(水) 15:08:22すみません、英語は正確に読めません。
フィーリングで適当にイグザンプルを斜め読みして書いてます。
use_mp3_utf8() の事でしたら、違います。
確かにこれでShiftJISは治るのですが、
Unicodeが全部"?"に変換されてしまいます。
0066デフォルトの名無しさん
2007/03/21(水) 15:24:47shiftjisにutf8フラグが付いてるだけじゃないの?
006763
2007/03/21(水) 15:41:15その通りだと思うのですが、
_utf8_off、encode、decode等してみたのですが
全て化け化けの結果が返ってきたのです…
0068デフォルトの名無しさん
2007/03/21(水) 16:19:55英語を勉強しろよ。
別のモジュールを使おうとしたときに同じような目に遭うぞ
0069デフォルトの名無しさん
2007/03/21(水) 17:58:000070デフォルトの名無しさん
2007/03/21(水) 18:34:37Rubyでもモジュールの内臓を引き摺り出して書き換える必要があったけど。
0071デフォルトの名無しさん
2007/03/21(水) 21:42:27お約束の「はまり」だ。自力で頑張ってくれ。
例のごとく「PODを読め」とかほざいているやつは、Jcode使えとか言ってるバカと同様
八割方テメエでもできないから心配することはない。
ちなみに、あんたが既に挙げている材料だけでうまくいくよ。
007263
2007/03/21(水) 22:28:13もうかなり悩んでるんです…
挙句の果てにはUnicode文字が含まれてたら
_utf8_off で普通の文字列にし、それ以外はShiftJISとしてutf-8にエンコードしてます。
本当にお願いします…コードをいくつか書いて頂ければ…
0073デフォルトの名無しさん
2007/03/22(木) 00:07:550074デフォルトの名無しさん
2007/03/22(木) 04:24:32掲示板に貼られる画像のサニタイジングをしたいのですが、CPANか
どこかにコードがなかったでしょうか。とりあえずJPEGとPNGだけでも
処理できたらいいのですが。
0075デフォルトの名無しさん
2007/03/22(木) 05:05:440076デフォルトの名無しさん
2007/03/22(木) 08:35:230077デフォルトの名無しさん
2007/03/22(木) 08:43:350079デフォルトの名無しさん
2007/03/22(木) 16:11:560080デフォルトの名無しさん
2007/03/22(木) 17:12:58これがエラーになるのですが考えられる原因はなんでしょうか?
0081デフォルトの名無しさん
2007/03/22(木) 17:22:22・useしてない
・モジュールが無い
・ブラウザで表示してるのにContentヘッダを出力してない
・脳内鯖にしかアップしてない
とりあえずエラーログ見ればいいと思う
0082デフォルトの名無しさん
2007/03/22(木) 17:44:290083デフォルトの名無しさん
2007/03/22(木) 17:55:050084デフォルトの名無しさん
2007/03/22(木) 18:03:420085デフォルトの名無しさん
2007/03/22(木) 18:03:460086デフォルトの名無しさん
2007/03/22(木) 18:14:190087デフォルトの名無しさん
2007/03/22(木) 18:28:020088デフォルトの名無しさん
2007/03/22(木) 19:39:440089デフォルトの名無しさん
2007/03/22(木) 19:43:350090デフォルトの名無しさん
2007/03/22(木) 20:24:23正規表現で伸ばし棒を使うとエラーが出てしまうのですがこれを回避する方法はないでしょうか?
よろしくお願いいたします
0091デフォルトの名無しさん
2007/03/22(木) 20:25:370092デフォルトの名無しさん
2007/03/22(木) 20:26:57これです
0093デフォルトの名無しさん
2007/03/22(木) 20:27:490094デフォルトの名無しさん
2007/03/22(木) 20:30:15具体的にエラーがでる正規表現と、エラーの文も書いてくれ
0095デフォルトの名無しさん
2007/03/22(木) 20:33:42my $str = "test";
$str =~ s/ニート//;
Unmatched [ in regex; marked by <-- HERE in m/ニー <-- HERE ト
and Settings\\デスクトップ\httpd142p\test.pl line 3.
こんな感じです
>>93
>>90=>>92です
0096デフォルトの名無しさん
2007/03/22(木) 20:34:122バイト目が [ になってるんでperlが混乱してるんだな。
0097デフォルトの名無しさん
2007/03/22(木) 20:37:10\Q\Eで囲め
0098デフォルトの名無しさん
2007/03/22(木) 20:40:14!!!!!
できました!!ありがとうございます!!!
0099デフォルトの名無しさん
2007/03/22(木) 21:22:200100デフォルトの名無しさん
2007/03/22(木) 21:33:380101デフォルトの名無しさん
2007/03/22(木) 21:52:35>>98は黙って>>10に書いてある通りのことをやれ。
0102デフォルトの名無しさん
2007/03/22(木) 21:53:250103デフォルトの名無しさん
2007/03/22(木) 22:08:34use strict;
use LWP::Simple;
use XML::Simple;
my $api = 'http://d.hatena.ne.jp/exist?mode=xml&url=';
my $url = 'http://www.yahoo.co.jp/';
my $document = LWP::Simple::get($api.$url)
or die "cannot get content from $url";
my $parser = XML::Simple->new;
my $data = $parser->XMLin($document);
print $data->{count}->{bookmark}->{content}, "\n";
http://www.itmedia.co.jp/enterprise/articles/0702/26/news011.html
ここのサンプルなんですがエラーがでました
何が悪いのでしょうか?そんなに難しいことをやってるわけではないと思うのですが
0104デフォルトの名無しさん
2007/03/22(木) 22:40:110105デフォルトの名無しさん
2007/03/22(木) 22:45:190106デフォルトの名無しさん
2007/03/22(木) 22:48:420107デフォルトの名無しさん
2007/03/22(木) 22:48:48>エラーが出たらエラーをそのままコピペしろ
と入れた方がいいね。
>>105
コマンドラインで実行した結果を出せよ。出せないなら、WebProg逝き。
0108デフォルトの名無しさん
2007/03/22(木) 22:56:48コピペした括弧が全角でした
なんで括弧だけ全角なのか意味不明です
わざとなんでしょうかね
ひどいサンプルです
0109デフォルトの名無しさん
2007/03/22(木) 23:02:580110デフォルトの名無しさん
2007/03/22(木) 23:05:47手を動かして理解するためのコードだとは思うが、なんで括弧が半端
に全角になってるんだろうな。(9行目の2つと13行目の閉じ括弧)
0111デフォルトの名無しさん
2007/03/22(木) 23:35:370112デフォルトの名無しさん
2007/03/22(木) 23:37:14一致するファイルの一覧)を配列に取得したいのですが相手サーバの設定の関係で
wgetとやらを使って接続しないといけません。
wgetの使い方は調べてみたのですが、それをPerlから実行してファイル一覧を取得
するにはどうやったらよいのでしょうか?
0113デフォルトの名無しさん
2007/03/22(木) 23:44:57どんな内容が返ってくるかは実際に見てみれ。
0114デフォルトの名無しさん
2007/03/23(金) 00:07:22サニタイジングなんて言ってたら高木大先生に張り倒されるぞ!
0115デフォルトの名無しさん
2007/03/23(金) 00:43:28思うのだが、wget使わないと取れないってどういう仕掛けなのだろう??
0116デフォルトの名無しさん
2007/03/23(金) 02:01:060117デフォルトの名無しさん
2007/03/23(金) 07:36:19ありがとうございます。やってみます。
>>115-116
Net::FTPで作ってたのですがこれだと相手に繋がらなくて客先の担当の方が
「wget使ってください」とのことでした。
0118デフォルトの名無しさん
2007/03/23(金) 08:57:31原因はわかってるのかな。それともwgetだと実績あるから
調べるの面倒だしそれにしとけとあしらわれたか?
0119デフォルトの名無しさん
2007/03/23(金) 09:41:38全てのa要素のhref属性値をzzzwww.html というファイルに出力する方法を教えてください。
0120デフォルトの名無しさん
2007/03/23(金) 09:56:38passiveコマンド叩けば通るとかいうオチだったりして……
0121デフォルトの名無しさん
2007/03/23(金) 10:23:13突然だねぇ・・・
0122デフォルトの名無しさん
2007/03/23(金) 10:24:01ググレカス
http://module.jp/blog/monday_module_HTML-LinkExtor.html
0123デフォルトの名無しさん
2007/03/23(金) 17:56:12javascript:a=document.getElementsByTagName('a');b='';for(i=0;i<a.length;i++)b+=a[i].href+'<br>';document.write(b);
0124デフォルトの名無しさん
2007/03/26(月) 16:19:01pasv() しても駄目か?
ファイヤーウォールがある場合は passive mode にしないと駄目なことがあるぞ。
0125デフォルトの名無しさん
2007/03/28(水) 11:20:00リファレンスを引いても載ってないし...。
0126デフォルトの名無しさん
2007/03/28(水) 11:49:020127デフォルトの名無しさん
2007/03/28(水) 11:54:00下記(*)の$_の手前にあるヤツなんですが・・
# CSV形式の $line から値を取り出して @values に入れる
{
my $tmp = $line;
$tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
@values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} …(*)
($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
}
Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm#CSV2Values
0128デフォルトの名無しさん
2007/03/28(水) 12:05:150129デフォルトの名無しさん
2007/03/28(水) 12:12:490130デフォルトの名無しさん
2007/03/29(木) 01:14:28デフォルトでは数値として扱われてしまい、1になってしまいます。
キャストの方法を調べたけど思うような情報が得られません。
もうしわけありませんが、教えていただけないでしょうか。
0131デフォルトの名無しさん
2007/03/29(木) 01:41:020132デフォルトの名無しさん
2007/03/29(木) 08:07:32ウチの環境下だと、普通に文字列認識なんだが変数かなんかに突っ込んで、
計算かましたりしてない?
% perl -le 'print substr qq{00001}, 3'
01
% perl -le 'print unpack qq{x3A2}, qq{00001}'
01
0133デフォルトの名無しさん
2007/03/29(木) 08:08:160134デフォルトの名無しさん
2007/03/29(木) 08:27:210135デフォルトの名無しさん
2007/03/29(木) 14:13:360136デフォルトの名無しさん
2007/03/29(木) 19:40:09のような文字列があった場合
○○の温度は10度の"10"を取得したいのですが、
どのように正規表現を書けばいいんでしょうか。
$value =~ /([0-9]+)/ のようにすると $1=2007 となりますが、
最大マッチしたうちのn番目を取得できたりする書き方があるんでしょうか
例がちょっとあれですが、○○には同じワードが入ることを想定してます。
0137デフォルトの名無しさん
2007/03/29(木) 19:42:390138デフォルトの名無しさん
2007/03/29(木) 19:57:25print "$word[3]\n";
汚くなったけど、上記のようにしてなんとかできました。失礼しました。
0139デフォルトの名無しさん
2007/03/29(木) 20:08:050140デフォルトの名無しさん
2007/03/29(木) 20:10:400141デフォルトの名無しさん
2007/03/29(木) 20:28:37君は著しく成長できたということだ。
0142デフォルトの名無しさん
2007/03/29(木) 20:45:580143壁|・ x ・)つ○
2007/03/29(木) 22:09:200144デフォルトの名無しさん
2007/03/30(金) 12:21:03そんなこと言うなよ
0145デフォルトの名無しさん
2007/03/30(金) 17:55:55俺が還暦を迎えた頃にはスゲーことになってると思うんだ。
0146デフォルトの名無しさん
2007/03/30(金) 21:01:15sub get_fields {
() = \%{$_[0].'::FIELDS'};
return \%{$_[0].'::FIELDS'};
}
「() =」これって何してるんでしょう?
perl5.003で動作するように書き換えられないかな?
0147デフォルトの名無しさん
2007/03/30(金) 21:06:28コメントで「『タイポじゃねーの警告』は黙れ」と書いてあるだろ。
つまりその部分は動作とは無関係。
しかし5.003とはまた随分古いバージョンだな。せめて5.005あたりにしとけよ…。
0148デフォルトの名無しさん
2007/03/30(金) 22:23:03すまん。
エラー書いてなかった。
Can't modify stub in list assignment at /path/to/base.pm line 43, near "};"
こんなのが出る。
> しかし5.003とはまた随分古いバージョンだな。せめて5.005あたりにしとけよ…。
大人の事情というやつで・・・。
0149デフォルトの名無しさん
2007/03/30(金) 22:58:15http://search.cpan.org/~nwclark/perl-5.8.8/pod/perldiag.pod#Can't_modify_%25s_in_%25s
- () = \%{$_[0].'::FIELDS'};
+ # () = \%{$_[0].'::FIELDS'};
+ local $^W = 0;
0150デフォルトの名無しさん
2007/03/31(土) 00:24:17そんな仕事辞めてしまえよ
0151デフォルトの名無しさん
2007/03/31(土) 01:14:490152デフォルトの名無しさん
2007/03/31(土) 02:08:390153デフォルトの名無しさん
2007/03/31(土) 02:12:15あとEPICとか? つーかPerlにはいいIDEないよ。
0154152
2007/03/31(土) 02:51:38そうですか、ではボチボチとやってみます
0155デフォルトの名無しさん
2007/03/31(土) 02:53:14社会のしがらみスルー系のレスの
ネタっぽさが薄まるんだよな
0156デフォルトの名無しさん
2007/03/31(土) 03:48:41は1から10までの数を持つリストを生成する式だと思うんですが、
$hoge = (1..10);
print $hoge;
とやればリストの最後の値である10が変数$hogeに代入されると思ったのに
なにも出力されません。
スカラー変数にリストを代入すると、リストの最後の値が代入されると思うんですが
どこが間違っているんでしょうか?
0157デフォルトの名無しさん
2007/03/31(土) 03:59:220158デフォルトの名無しさん
2007/03/31(土) 04:02:35↓を実行するとわかるけど、範囲演算子(..)が範囲内の値リストを生成するのは、
リストコンテキストの時。スカラーコンテキストでは、違う意味になるよ。
http://d.hatena.ne.jp/palmo/20060724/rangeop
while (<DATA>) {
chomp;
$hoge = (1..3);
print "$_ = $hoge\n";
}
__DATA__
AAA
BBB
CCC
DDD
EEE
FFF
0159デフォルトの名無しさん
2007/03/31(土) 04:05:29$hoge = (1..10)
のようにスカラコンテキストで用いた場合、..の左項が真になった
時点から右項が真になるところまで真を返す。(...だとちょっと変わる)
いずれかの項が定数値であった場合、それは $. との比較であるとみなされる。
全く読み込んでいない状態なら $hoge の値は $. == 1 の結果に等しい。
0160デフォルトの名無しさん
2007/03/31(土) 04:17:290161デフォルトの名無しさん
2007/04/01(日) 16:28:17...演算子もコンテキストで意味が変わるんですね。
わかりました。ありがとうございます。
0162デフォルトの名無しさん
2007/04/02(月) 04:58:36スクリプト言語経験者でも表記にとっつきにくいからかな。
マニュアル嫁で突っ返されることが少ない気がする。
(マニュアル読んでもわかんなかったりするし;ω;)
0163デフォルトの名無しさん
2007/04/02(月) 06:06:27インストールしたんだけど、Jcode.pmがインストールされない。
なぜ?教えてください。
0164デフォルトの名無しさん
2007/04/02(月) 07:17:48Perl 5.8.0以降Jcodeが標準モジュールじゃなくなったからじゃないかな
0165デフォルトの名無しさん
2007/04/02(月) 09:35:555.8.0以降はJcode.pmが標準と聞きましたので
当然、インストールされると思ってたのですが、
探しても見つからないんですよ。
0166デフォルトの名無しさん
2007/04/02(月) 09:41:410167デフォルトの名無しさん
2007/04/02(月) 10:17:24使っているアクセス解析プログラムがJcode.pm使っているんですよ。
perlのPG経験がないんで、改造も出来ないんです。
これです。
ttp://www.bflets.dyndns.org/Tools/AWStatsJpn.html
0168デフォルトの名無しさん
2007/04/02(月) 10:23:07池沼か?標準じゃ入ってないと言ってるだろうが。
0169デフォルトの名無しさん
2007/04/02(月) 10:29:590170デフォルトの名無しさん
2007/04/02(月) 10:30:150171デフォルトの名無しさん
2007/04/02(月) 10:34:350172デフォルトの名無しさん
2007/04/02(月) 10:46:55インストールしてもうまくいかないんですよ
やりかたが間違ってるかもしれませんが。
説明しているページで、そんなモジュールなかったり。
以下は参考にしたページです。
ttp://sakaguch.com/SetJcodePm.html
win_install.plなんてないし。
マニュアルで置いても、変換後のファイルは0バイトだし。
0173デフォルトの名無しさん
2007/04/02(月) 11:33:15Jcodeインストールするならコマンドプロンプトからppm(今時はppm-shellかな)を起動させて
install Jcode(enter)
で一発で入ると思うが。
0174デフォルトの名無しさん
2007/04/02(月) 11:57:01ありがと
意味不明だけど、勉強してやってみる
0175デフォルトの名無しさん
2007/04/02(月) 12:17:490176デフォルトの名無しさん
2007/04/02(月) 12:23:33でも、うまく動かなった。
これはperlが原因じゃないから
ここで、さよなら。
じゃ、教えてくれた人、ありがと。
0177デフォルトの名無しさん
2007/04/02(月) 12:25:270178デフォルトの名無しさん
2007/04/02(月) 12:31:16webprog板でやってくださいね
0179デフォルトの名無しさん
2007/04/02(月) 13:02:54そのわりに、明確な回答書いてる奴いねーけどな
0180デフォルトの名無しさん
2007/04/02(月) 13:14:06公式のは古いからいつものサードパーティの
所にver.2.06があるからそれをインストールするだけじゃん
0181デフォルトの名無しさん
2007/04/05(木) 09:34:45abcあいうえお123./<>~"@
の様な文字列から日本語だけマッチするもしくはASCIIコードだけマッチさせるようにするには
どうすればよいのでしょうか?
0182デフォルトの名無しさん
2007/04/05(木) 10:12:57文字コードをeucにして、
my $pat = pack("C*",0x20,0x21..0x7e);
/[$pat]+/ でASCII
/[^$pat]+/ で日本語(と制御コード)
0184デフォルトの名無しさん
2007/04/05(木) 20:53:28$_ = 'AAAbarbarbazZZZ'; だとして
@a = /AAA(foo|bar|baz)+ZZZ/;
とすると、@a の中身は最後にマッチした @a = ('baz') 一つとなりますが、
これを @a = ('bar', 'bar', 'baz')
とする正規表現はあるでしょうか?
(){n} でなく ()+ を使ったのは数量が固定ではないためです。
なんらしか正規表現方法で
上記一文で済ませられたら…と思い質問させていただきました。
0185デフォルトの名無しさん
2007/04/05(木) 21:38:28何でも一行に詰め込みゃいいってもんでもないけど…
@a = splice @{[ grep length, split /(foo|bar|baz)/, 'AAAbarbarbazZZZ' ]}, 1, -1;
0186デフォルトの名無しさん
2007/04/05(木) 21:55:26'AAAfooXXbarYYYYYbazZZZ' のように目的外の物が混ざっている場合
のチェックを別にしなければなりませんが。
やはり ()+ でのマッチを正規表現の修正で全部リストする無理でしょうか
0187デフォルトの名無しさん
2007/04/05(木) 22:27:05とかすれば全部とれることはとれる。
リストにはならないけど。
0188デフォルトの名無しさん
2007/04/05(木) 22:29:35> 'AAAfooXXbarYYYYYbazZZZ' のように目的外の物が混ざっている場合
その場合 @a は () とするべきか
AAA foo XXbarYYYYYbazZZZ と分けるべきか
AAAfooXX bar YYYYYbazZZZ と分けるべきか
AAAfooXXbarYYYYY baz ZZZ と分けるべきか
>>184からは読み取れないよ?
0189184
2007/04/05(木) 23:22:15>>187
()+ での一気取得が駄目だった場合、私もそれを候補の一つに考えていました
リストにするには(foo|bar|baz)のマッチングがもう一回必要になってしまいますが
>>188
説明不足でした。申し訳ありませんでした
(ある程度大きいテキストから)
'AAA' と 'ZZZ' の間が (foo|bar|baz)+ のみで構成されている箇所を探し
その部分をリストとして取得したいと思っております
ですので、提示くださった選択肢の中では
>その場合 @a は () とするべきか
を考えています
(foo|bar|baz) の部分は実際はかなり重そうな正規表現の羅列と選択(|)で構成されていて
()+ による繰り返しも回数も非常に多く
(foo|bar|baz) のマッチングによる2度手間(切り出し・リストへ分割)は避けようと思い
今現在は下記の感じの処理を考えています
if (/AAA/) {
while ($' =~ /^(foo|bar|baz|ZZZ)/) {
if ($1 eq 'ZZZ') { OK; last; }
push(@a, $a);
}
}
}
そこで >>184 の質問するに至りました
マッチングも一回で一文で済ませられたら…と
長文失礼
0190184
2007/04/05(木) 23:38:24while ($' =~ //)
は
while ($' =~ //o)
を考えています
今docを読み込んでいるんですが ()+ でのグループの繰り返しマッチングの
全リスト取得は、正規表現工夫しても仕様的に無理なのかな…
0191184
2007/04/05(木) 23:40:39慌てて書き上げたもので
連投すみません
0192デフォルトの名無しさん
2007/04/05(木) 23:44:49AAAの前や、ZZZの後ろは無視していいのか?
0193デフォルトの名無しさん
2007/04/05(木) 23:47:12入力文字列と、それに対する@aの中身はどうなるのか。
0194デフォルトの名無しさん
2007/04/05(木) 23:51:081対の括弧につき1つの値が保存される仕様なんだから、
1回のマッチにおいて1対の括弧で複数個の値を得るのは
そりゃ無理だわな。
それに複雑な正規表現でバックトラックの嵐にするより、
幾つかのシンプルな処理に分けた方が速い。
if (/AAA/g) {
push @a, $1 while /\G(foo|bar|baz)/g;
}
0195デフォルトの名無しさん
2007/04/05(木) 23:52:06まぁ、元のデータの性質が分からんと何とも言えんが。
0196こういうこと?
2007/04/06(金) 00:00:11$x =~ s/(foo|bar|baz)/push @a, $1/ge;
}
0197196
2007/04/06(金) 00:06:160198184
2007/04/06(金) 00:15:33はい。
/AAA(foo|bar|baz)+ZZZ/
これに厳密にマッチするところの(foo|bar|baz)のみを取得したいので
111AAAfooZZZ222 : 111 222 等は要りません
111AAAfooXXXbarZZZ222 : この場合 foo bar も要りません
111AAAfoofoofoobazbarZZZ222 : @a = ('foo', 'foo', 'foo', 'baz', 'bar') を取得したい
>>193
申し訳ありません。実際の入力データはお見せすることが出来ないので、
等価な具体例の作成も時間がかかってしまうかも知れません
上記例でご容赦ください
>>194
>そりゃ無理だわな。
ありがとうございます。
これが出来るのかどうかが一番知りたかったので、ふんぎりがつきました。
実際の具体例のデータを示せないので、(主に速度に関する)お答えは難しいですよね。
その中でも例やヒントを示してくださった方々ありがとうございました。
内部的な処理は詳しくないのですが、試行錯誤しながら参考にさせていただきたいと思います。
皆さんレスありがとうございました。(_ _)
0199デフォルトの名無しさん
2007/04/06(金) 04:08:13どういたしまして
0200デフォルトの名無しさん
2007/04/06(金) 08:54:56わかってやれよな。
0201デフォルトの名無しさん
2007/04/06(金) 09:31:060202デフォルトの名無しさん
2007/04/06(金) 10:26:07$_ = '111AAAfoofoofoobazbarZZZ222';
/AAA(?:(foo|bar|baz)(?{push(@a,substr($&,-3))}))+ZZZ/;
print join(",",@a),"\n";
0203デフォルトの名無しさん
2007/04/06(金) 11:15:130204デフォルトの名無しさん
2007/04/06(金) 11:30:160205デフォルトの名無しさん
2007/04/07(土) 13:27:01# データ内に改行が無ければ最初の二行は
# $_ = <>; で置き換え可能
########################################
chomp(@tmp = <>);
$_ = join '', @tmp;
$re = qr/foo|bar|baz/i;
s!(AAA(?:$re)+ZZZ)!push @a,$1=~/($re)/g !ge;
print join("-", @a);
これはひどい。
0206デフォルトの名無しさん
2007/04/07(土) 13:37:010207デフォルトの名無しさん
2007/04/08(日) 15:55:23ベスト??
車輪の再発明はしない方向で・・・
0208デフォルトの名無しさん
2007/04/08(日) 15:56:59底の変換公式
0209デフォルトの名無しさん
2007/04/08(日) 16:29:00thx
0210デフォルトの名無しさん
2007/04/08(日) 21:57:130211デフォルトの名無しさん
2007/04/08(日) 23:12:16嵌りどころはあるが、「難しい」ではなく「勝手にいじるなよ!」ってな感じ。
Cの派生言語からでも同様。
「難しい」ってのは今までまっとうな言語の経験がないからじゃないかと思う。
0212デフォルトの名無しさん
2007/04/08(日) 23:59:21なんとなく気持ち悪いw
0213デフォルトの名無しさん
2007/04/09(月) 00:12:22Cの原始的な型じゃ、実際にコードを書くときたいして助けになってくれてないだろう。
目糞鼻糞だと思うんだけど。
0214デフォルトの名無しさん
2007/04/09(月) 00:21:03Cだと文字列めんどくせえし、C++と比べても正規表現処理のためのコード量がぜんぜん違うからな。
0215デフォルトの名無しさん
2007/04/09(月) 00:22:52そうでもない。例えばプロトタイプ宣言をちゃんと使っていれば
誤った引数を渡したりしたときなど、コンパイルエラーとして
コンパイルの時点で捕捉出来るし、プロトタイプ宣言自体が
関数の使い方に関する一番簡単なドキュメントになる。
0216デフォルトの名無しさん
2007/04/09(月) 00:27:16テキストをちょろっと弄くるには便利だよね。
クラスやリスト、リファレンス等の基本的な仕組みが
adhoc過ぎて汚いし(←個人的見解)
プログラムが大きくなればなるほど型付静的言語の有り難味が増す。
Perlで小さいプログラム以上のものを書く気にはとてもなれない。
同じ動的言語でも、Pythonあたりならまだ許容量大きいかな。
0217デフォルトの名無しさん
2007/04/09(月) 00:28:33文字列はperlみたいなのが楽だが。
0219デフォルトの名無しさん
2007/04/09(月) 00:41:27バイナリとかバイト/文字単位の処理だとpack(), unpack()の嵐だわな。
それ考えると、文字列処理とか言っても正規表現使いやすいだけって希ガス。
エンコーディング周りもそんなに便利とは言えないし。
0220デフォルトの名無しさん
2007/04/09(月) 06:15:360221デフォルトの名無しさん
2007/04/09(月) 07:43:020222デフォルトの名無しさん
2007/04/09(月) 19:15:26しかし、たとうばHTMLのタグを外す処理を書く ってなった時、
perlなら簡単だけど、Cで書くとなると工程からして憂鬱だ…。
regexp.dll使うけど、メモリリーク等に気を遣わないとで面倒だ…。
0223デフォルトの名無しさん
2007/04/09(月) 20:53:410224デフォルトの名無しさん
2007/04/09(月) 21:53:11まぁCで文字列処理はちょっとな。
どうしても(C++でなく)Cを使う必要があるのなら、せめて
GCライブラリを使いたいところ。
C++なら、文字列処理は別に苦にはならないはず。
それとCで字句/構文解析ならlex/yaccを使う場合も
多いんじゃないかな。
0225デフォルトの名無しさん
2007/04/10(火) 17:49:24ttp://gigazine.net/index.php?/news/comments/20070410_libwww/
0226デフォルトの名無しさん
2007/04/10(火) 18:03:28マジかと思ってUserAgentをlibwwwにしてググったらほんとに検索できなかった。
一時的な効果しか無いだろうに、アホな対応するなぁ…。
これからは適当なAgentを騙れってことでOK?
0227デフォルトの名無しさん
2007/04/10(火) 18:18:390228デフォルトの名無しさん
2007/04/10(火) 19:15:26libwww-perlを拒絶しても、本当に悪い奴は遮断できず、
入門過程の新参者を困惑させ余計な時間をとらせるだけ。
まさに1000害あって1利なし。
0229デフォルトの名無しさん
2007/04/10(火) 19:59:130230デフォルトの名無しさん
2007/04/10(火) 22:32:590231デフォルトの名無しさん
2007/04/10(火) 22:39:480232デフォルトの名無しさん
2007/04/10(火) 22:59:000233デフォルトの名無しさん
2007/04/11(水) 00:55:09んなもんどうでもなるやん。何の意味があるのかさっぱりわからん。
0234デフォルトの名無しさん
2007/04/11(水) 01:45:440235デフォルトの名無しさん
2007/04/11(水) 10:26:47少しお尋ねします。
例えば
perl -pi.bak -e "tr/A-Z/a-z/"*.html
とか便利ですよね?
これを.plとして使いたいのですが無理なのでしょうか?
コマンドラインから打ち込むしか手がないのでしょうか?
0236デフォルトの名無しさん
2007/04/11(水) 10:40:03perlrun(1)の-iオプションの説明のとこに例があるだろ。よく嫁。
From the shell, saying
$ perl -p -i.orig -e "s/foo/bar/; ... "
is the same as using the program:
#!/usr/bin/perl -pi.orig
s/foo/bar/;
which is equivalent to
#!/usr/bin/perl
$extension = '.orig';
LINE: while (<>) {
if ($ARGV ne $oldargv) {
(改行大杉でおこられるので以下略)
0237デフォルトの名無しさん
2007/04/11(水) 10:40:50http://pc11.2ch.net/test/read.cgi/tech/1173880452/235
0238デフォルトの名無しさん
2007/04/11(水) 10:49:06アリガトウございます。
なお、質問するスレが似つかわしくないと重い他スレにも同じ内容を質問させていただきましたが
ご迷惑かけたようで申し訳ないです。
0239デフォルトの名無しさん
2007/04/11(水) 11:06:13windowsだとどうも面倒なようなので他の手にします。お騒がせしました。
0240デフォルトの名無しさん
2007/04/11(水) 11:33:56与えたperlをsystemかexecで起動するようなスクリプト書く
手もあるよ。
病的に効率を気にする人にはお勧めしませんけど。
0241デフォルトの名無しさん
2007/04/11(水) 21:53:06Windowsなら.batに書けばいいんじゃね?
なんで.plにこだわるのかわからん
0242デフォルトの名無しさん
2007/04/11(水) 22:50:120243デフォルトの名無しさん
2007/04/11(水) 23:15:280244デフォルトの名無しさん
2007/04/12(木) 01:10:07馴れ合いなので、聞く必要なし
0245デフォルトの名無しさん
2007/04/12(木) 04:01:25見事になんにもなし。
0246デフォルトの名無しさん
2007/04/13(金) 05:01:57ありがとうございます。
>>241
いえ。こだわってないから他の手にするつもりです。
UNIX環境でないとなかなか不便なものなんですね。
0247デフォルトの名無しさん
2007/04/13(金) 22:58:40>UNIX環境でないとなかなか不便なものなんですね。
この点は同意なんだけどね。
しかし、キミが不便だと言っている点についてオレは不便を感じたことはないな。
0248デフォルトの名無しさん
2007/04/14(土) 00:31:00てかperlの質問じゃなくて、コマンドラインについての質問だよな・・・
0249デフォルトの名無しさん
2007/04/14(土) 13:30:37>しかし、キミが不便だと言っている点についてオレは不便を感じたことはないな。
主観的且つ感情的な意味でしょうか?そうではないとしたら何か理由がおありですよね?
不便と思わない理由はなんでしょうか?
>>248
スレ違いになるかもですね。
そろそろ退散したいと思います。
0250デフォルトの名無しさん
2007/04/14(土) 13:32:25?
0251デフォルトの名無しさん
2007/04/14(土) 17:11:52# >>235 の望みを叶える夢のスクリプト:
exec 'perl', '-pi.bak', '-e "tr/A-Z/a-z/"', shift;
__END__
0252デフォルトの名無しさん
2007/04/14(土) 22:29:21頭大丈夫?
0253デフォルトの名無しさん
2007/04/14(土) 22:41:39間抜けな質問というしかない。
0254デフォルトの名無しさん
2007/04/14(土) 22:55:57@a = grep {/(foo|bar|baz)/} split /(foo|bar|baz)/ , $_;
0255デフォルトの名無しさん
2007/04/14(土) 23:30:26会社のHP作成を引き継いだのですが、わからないことがあるのでどなたか教えていただけないでしょうか。
コンボボックスを外部のテキストから読み込んでいるのですが、途中までしか表示されないのです。
0<>--<><>
1<>A<><>
2<>B<><>
3<>C<><>
4<>D<><>
5<>E<><>
6<>F<><>
7<>G<><>
8<>H<><>
(中略)
14<>N<><>
上記が外部テキストの中身なのですが、コンボボックスには8までしか表示されないのです。
コンボボックスの方は
#編集モード以外は表示するだけ、編集モード時はコンボボックスで表示
if (!$edit) {$html .= "<td align=\"center\"><table width=\"100%\">";
for ($l = 0; $l < $periods; $l++) {
if ($showpname) { $html .= "<tr><td>$periodname[$l]</td>"; }
$html .= "<td align=\"center\">$STATUSSTR[$stats[$l]]</td></tr>";}
$html .= "</table></td>\n";}
となっています。
全てを表示させるようにするにはどこを変えたらいいのでしょうか。
(これだけの情報では不十分でしたらすみません。
他にどんな情報が必要かも教えていただければ幸いです)
Perl関連の本など読んでみたのですがわからなくて…
宜しくお願いします。
0256デフォルトの名無しさん
2007/04/14(土) 23:36:540257デフォルトの名無しさん
2007/04/14(土) 23:48:58あ、もしかしてここは関係なかったですかね…
カレンダーの1日ごとにコンボボックスが入っているので、そのカレンダーの方のコードなんでしょうか…
わからないことだらけのまま質問してしまってごめんなさい。
もう一度コードを見直してみます。
0258デフォルトの名無しさん
2007/04/14(土) 23:53:55perlコードの、$periods、$showpname・・・とやらが何なのかわからないと
何もアドバイス出来ないよ。
0259デフォルトの名無しさん
2007/04/15(日) 00:03:49そうですか…
$periodsなどなどは専門用語なのかなぁ、と思っていたのでそこから間違いだったのですね。
前任者とは全く連絡が取れず、初心者の私には何がなにやらさっぱりで…
失礼致しました。
もっと勉強して出直します!
0260デフォルトの名無しさん
2007/04/15(日) 00:23:130261デフォルトの名無しさん
2007/04/15(日) 00:39:39期間…カレンダー関係ですかねぇ。
日ごとにアルファベッドを選択して登録するんですけど、
何ヶ月か分をまとめて登録してそれをScriptで(?)違うページに呼び出すので、それですかねぇ…
それにしても8番までしか出てこないのもどこかで指定してるんですかねぇ。
あまりにファイルが多すぎて、探すのに時間がかかりそうです…
0262デフォルトの名無しさん
2007/04/15(日) 00:52:49本当にそのコードが該当コードなのかどうか怪しいね
ありうるとすれば@STATUSSTRの中が"<select>…"といったhtmlになってるとか
とりあえずPerlの配列変数は先頭の記号が $ だったり @ だったりするので
それだけ注意して変数をさかのぼって行くとか
お節介だけど$showpnameのif文、通らない場合に開始<tr>タグ欠けるよ
0263デフォルトの名無しさん
2007/04/15(日) 01:03:420264デフォルトの名無しさん
2007/04/15(日) 01:56:12エスパーのおいらが予測するには、>>255 が挙げた箇所の次に
} else {
という行があり、その後の部分が問題の部分なんだろうな。
0265デフォルトの名無しさん
2007/04/15(日) 06:52:58「type="select"」あたりで検索すれば、該当個所の近辺の
コードに当たるんじゃないか?
0266265
2007/04/15(日) 06:55:310267デフォルトの名無しさん
2007/04/15(日) 23:51:49実は前任者さん、その書き込みの様子をモニターを通して見ておりました。
では、心に引っかかっていた辛い過去。
あの時、伝えられなかった想いを今、、、
0268デフォルトの名無しさん
2007/04/16(月) 00:50:06これからの初心者は、今の時代に合った言語を使ってくれ・・・
・・以上
0269デフォルトの名無しさん
2007/04/16(月) 00:53:480270デフォルトの名無しさん
2007/04/16(月) 01:04:26Whitespaceだろ。
0271デフォルトの名無しさん
2007/04/16(月) 04:53:46Perlは消えなくていい。PHP、頼むから消滅してくれ。
0272デフォルトの名無しさん
2007/04/16(月) 04:56:250273デフォルトの名無しさん
2007/04/16(月) 06:08:15皆さんどうもありがとうございます。参考になりました!
ここで皆さんにお聞きするにはあまりにも自分が無知すぎて申し訳ないです。
更新は休みの土日しかできないので、来週までに色々調べてまた挑戦します。
>>262さん
なるほど…
<tr>タグの件、ご指摘ありがとうございます!
>>263さん
書き直すなんて絶対無理ですので頑張って解読したいと思います…
>>264さん
} else { って部分あります!!
その部分に注意してみます。
>>265さん
検索ですね。htmlがperlの中にあるので試してみます!
>>267さん
実は前任者とは全く面識がないので、あの時も何もあったもんじゃない、って感じなのですが…
0274デフォルトの名無しさん
2007/04/16(月) 14:16:33すんげー今更だな
google出来た頃から規約に書いてあるし
http://www.google.co.jp/accounts/TOS
0275デフォルトの名無しさん
2007/04/17(火) 06:50:020276デフォルトの名無しさん
2007/04/17(火) 06:59:52ってあるからなぁ
0277デフォルトの名無しさん
2007/04/17(火) 13:36:22$var = 010203 とあります
これを
$var = 01/02/03
このように2桁ごとにスラッシュを入れるにはどうしたらよいでしょうか?
0102 や 01、01020304 の場合などどの桁数にも対応したいです
0278デフォルトの名無しさん
2007/04/17(火) 13:43:510279デフォルトの名無しさん
2007/04/17(火) 15:07:07できました
0280デフォルトの名無しさん
2007/04/17(火) 15:48:19s{([0-9]{2})}{$1/}g
とかの方が良い気がする
0281デフォルトの名無しさん
2007/04/17(火) 16:06:260282デフォルトの名無しさん
2007/04/17(火) 16:11:380283デフォルトの名無しさん
2007/04/17(火) 16:44:03かな
0284デフォルトの名無しさん
2007/04/17(火) 17:15:38perl -le '$var = qq{010203} ; print join q{/}, ( $var =~ /(\d{2})/g )'
0285デフォルトの名無しさん
2007/04/17(火) 19:37:560286デフォルトの名無しさん
2007/04/17(火) 19:46:31$ perl -e 'use utf8; print q[0] =~ /\d/'
1
0287デフォルトの名無しさん
2007/04/17(火) 22:03:190288デフォルトの名無しさん
2007/04/17(火) 22:40:333桁区切りにカンマをつけるというのがよくあるから
それを参考に好きなの使えば?
0289デフォルトの名無しさん
2007/04/17(火) 22:57:26答えはそれでいいんだろ?
0290デフォルトの名無しさん
2007/04/17(火) 23:59:03質問者の出してる例はそうは言ってないぞ。
0291デフォルトの名無しさん
2007/04/18(水) 03:02:24Date::Manipでできんじゃね?
0292壁| x ・)つ○
2007/04/18(水) 03:09:07for ($i = 2; $i < rindex($var, ""); $i += 3) {
substr($var, $i, 0) = "/";
}
0293デフォルトの名無しさん
2007/04/18(水) 12:07:560294デフォルトの名無しさん
2007/04/18(水) 12:18:500295デフォルトの名無しさん
2007/04/18(水) 13:07:55人間の読み書きの部分で効率悪いと思う
0296デフォルトの名無しさん
2007/04/18(水) 14:36:580297デフォルトの名無しさん
2007/04/18(水) 14:43:010298デフォルトの名無しさん
2007/04/18(水) 16:53:45$2なんてないじゃん
0299デフォルトの名無しさん
2007/04/18(水) 17:11:53なにを言っているんだお前は。
0300デフォルトの名無しさん
2007/04/18(水) 17:40:37> perl -e "q/123/ =~ /(\d)(?=\d)(\d\d)/; print $2;"
23
そもそも、(?= )はゼロ幅先読みだろう。
> perl -e "q/123/ =~ /(\d)((?=\d))/; print $2;"
(出力なし)
0301デフォルトの名無しさん
2007/04/18(水) 20:54:57・)つ● ←おれいのしな
0302デフォルトの名無しさん
2007/04/19(木) 10:56:55そのとおり。適切な指摘ありがと。書いてから気がついた。
>>283か、
s|(\d\d)(?=\d)|$1/|g
みたいな感じで。
0303デフォルトの名無しさん
2007/04/19(木) 22:59:05open IN , ">$failename";
print IN , "test;
close IN;
で、$filenameに絶対パスを入れたいんですが、なんかうまく言ってくれないんです Orz
助けてエロい人
0304デフォルトの名無しさん
2007/04/19(木) 23:02:26> で、$filenameに絶対パスを入れたいんですが、なんかうまく言ってくれないんです Orz
さあ、「なんかうまく言ってくれないんです」の「なんか」を推定するクイズです!!
0305デフォルトの名無しさん
2007/04/19(木) 23:08:280306デフォルトの名無しさん
2007/04/19(木) 23:11:10Windows で \ 記号がディレクトリ名の区切りなもんだから
ダブルクォーテーションで括っただけだとエスケープと
解釈されちゃって変な文字列完成。→オープン→エラー。
そんなファイルはねえよヴォケと $! に入っている。
0307デフォルトの名無しさん
2007/04/19(木) 23:34:21そもそも IN じゃなくて OUT だろうと
use Fatal qw(open close);
open my $out, '>', $filename;
print {$out}, "test";
close $out;
0308307
2007/04/19(木) 23:39:40+ print {$out} "test";
0309デフォルトの名無しさん
2007/04/19(木) 23:40:550310デフォルトの名無しさん
2007/04/19(木) 23:54:370311265
2007/04/19(木) 23:58:020312303
2007/04/20(金) 00:05:38こんな初心者をささえてくれてありがとお つω;
0313デフォルトの名無しさん
2007/04/20(金) 01:32:590314デフォルトの名無しさん
2007/04/20(金) 03:42:050315デフォルトの名無しさん
2007/04/20(金) 03:53:440316デフォルトの名無しさん
2007/04/20(金) 03:54:26最高です!!!
0317デフォルトの名無しさん
2007/04/20(金) 12:14:510318デフォルトの名無しさん
2007/04/20(金) 15:30:270319デフォルトの名無しさん
2007/04/20(金) 19:25:20print FILEA @http;
このような記述をしたら、
Variable "@http" is not imported at http-client.pl line 53.
Variable "@http" is not imported at http-client.pl line 54.
Global symbol "@http" requires explicit package name at http-client.pl line 53.
Global symbol "@http" requires explicit package name at http-client.pl line 54.
と言われました。
これは何のエラーですか!?
0320デフォルトの名無しさん
2007/04/20(金) 22:19:470321デフォルトの名無しさん
2007/04/20(金) 23:21:12Variable "@http" is not imported については、perldiagをどうぞ。
というか、「何の」もなにもperlが出しているエラーなんだからまずはここで調べるべし。
つ http://perldoc.jp/docs/perl/5.6.1/perldiag.pod
とりあえず、use strictなのに @http が生で使われているのが原因ですので、パッケージを明示的に
指定して使うか、my宣言すればいいのでは。
0322デフォルトの名無しさん
2007/04/21(土) 23:17:55ちなみに、PDFの仕様として:
・改行文字はCR,LF,CRLF,のどれでもよい。
・文字列内での改行文字はそのままのかたちで残さなければならない。
・文字列内で(見た目のために)改行したいときは \改行文字 とする。
read(FILE, $buf, 512) ってのもめんどくさそうだし、できれば while(<FILE>) で
済ましたいんですが、意味のある改行もあるしなぁ。。。
0323デフォルトの名無しさん
2007/04/22(日) 00:20:39何をしたいのか知らんが、まずCPANでPDF関係のモジュールを
サーチしたほうがいいね。
あなたがしたいことを既に実現しているモジュールがあるかもしれないし、
少なくとも、改行文字の扱い方については、ソースの中にお手本が
あると思うし。
0324303
2007/04/22(日) 04:50:29requier './jcode.pl';
sub jis { $msg = $_[0]; &jcode'convert(*msg, 'jis'); }
ってコードがあったのですが
&jcode の後ろについている ' の意味がわかりません。
もしかして
&jcode::convert(*msg,'jis');
と同義ですか?
エディターの色分けが気持ち悪くなるので直したいです。教えてエロい人 Orz
0325デフォルトの名無しさん
2007/04/22(日) 05:35:130326デフォルトの名無しさん
2007/04/22(日) 05:37:45エロい人よりマニュアルに頼ろうよ。
<q cite="http://www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html">
古いパッケージ区切り子はシングルクォートでしたが、
現在はダブルコロンを使うのが推奨されています。
</q>
http://mikeneko.creator.club.ne.jp/~lab/kcode/jcode.html#h2-2
0327324
2007/04/22(日) 11:13:18Jcodeの使い方も含めて勉強してきます ><ノ
0328デフォルトの名無しさん
2007/04/22(日) 14:43:25Undefined subroutine &Compress::Zlib::gzopen called at /usr/local/lib/perl5/5.8.8/CPAN.pm line 5721.
何をインストールしても大体このエラーが出て失敗します。
Zlib は、
/usr/local/lib/perl5/site_perl/5.8.8/Compress/Zlib.pm
にあって、サブルーチン gzopen もありました。
また、@INC に /usr/local/lib/perl5/site_perl/5.8.8 は含まれていました。
どこに問題があるか分からないのですが、教えてもらえないでしょうか。
環境は、
OSX 10.4.9 で Perl 5.8.8 を /usr/local/bin にインストールしました。
0329デフォルトの名無しさん
2007/04/22(日) 16:09:08あえて /usr/bin/perl ではなく /usr/local/bin/perl を使いたいわけね?
で、実際に使ってる(環境変数 PATH で優先的に参照される)のは /usr/bin/perl ではなく、
/usr/local/bin/perl ってことに間違いはない?
0330デフォルトの名無しさん
2007/04/22(日) 16:35:51レスありがとうございます。
>あえて /usr/bin/perl ではなく /usr/local/bin/perl を使いたいわけね?
はい。ソースコードからインストールしたらそこにインストールされたので、
/usr/local/bin/perl を使っています。
>で、実際に使ってる(環境変数 PATH で優先的に参照される)のは /usr/bin/perl ではなく、
>/usr/local/bin/perl ってことに間違いはない?
間違いないはずです。
which perl で確認しました。
CPAN.pm の該当箇所をみると、
$CPAN::META->has_inst("Compress::Zlib") で判定した後に、
Compress::Zlib::gzopen を呼び出していました。
そこで gopen がないとなる理由がよく分かりません。
> >で、実際に使ってる(環境変数 PATH で優先的に参照される)のは /usr/bin/perl ではなく、
> >/usr/local/bin/perl ってことに間違いはない?
> 間違いないはずです。
> which perl で確認しました。
$env
してみると判るけれども標準ではpathが通っていないと思うですです。
PATH=/bin:/sbin:/usr/bin:/usr/sbin
@MacOSX 10.4.9
もっぺん確認してみよう♪
♯tu-ka未だに5.8.6のままなんだよなぁ。。。(´・ω・`)
$ perl -v
This is perl, v5.8.6 built for darwin-thread-multi-2level
(with 3 registered patches, see perl -V for more detail)
0332デフォルトの名無しさん
2007/04/22(日) 17:55:38レスありがとうございます。
$env
で確認してみましたが、先頭に/usr/local/binがありました。
PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin
こうなるように、以前./bash_profile に追加しました。
となると、原因は不明でしょうか?
インストールの仕方が悪かったのかなあ。
0333デフォルトの名無しさん
2007/04/22(日) 20:53:01手動で入れろ。
0334デフォルトの名無しさん
2007/04/22(日) 21:21:50PDFファイルのすべてを把握するのが目的です。
CPANをみたところ、PDFのテキストや書誌情報を抽出したりするためのAPIは用意されてる
のですが、もっと低レベルなパーサーがないようです。。
各種トークンが出現するたびにイベントを起動するような奴がほしいんですが。
HTML::ParserのPDF版でPDF::Parserみたいな感じの奴です。
0335デフォルトの名無しさん
2007/04/22(日) 23:26:59UTF-8でURIエスケープされた文字列を、アンエスケープするPerlの処理でけつまづいてます。
元の文字列をURIエスケープした文字列がサーバ側まで来ているのは確認しました。
「質問」→「%E8%B3%AA%E5%95%8F」だとか、「ü」→「%C3%BC」だとか。
これを
$utf8str =~ s/%([a-f\d]{2}/pack('H2',$1)/egi;
しても、正しくアンエスケープされない(文字化けする)のです。
UTF-8が可変バイトなのが曲者なのでしょうか。。。
ググった先(ttp://oshiete1.goo.ne.jp/kotaeru.php3?q=1644542)の
$utf8str =~ s/%(e[a-f\d])%([a-f\d]{2})%([a-f\d]{2}/pack('H2',$1).pack('H2',$2).pack('H2',$3)/egi;
してもやはりだめでした。
0336デフォルトの名無しさん
2007/04/22(日) 23:56:33むあじっすか。
0337デフォルトの名無しさん
2007/04/22(日) 23:59:22use Encode qw/from_to/;
my $str = '%E8%B3%AA%E5%95%8F'; # utf8の'質問'をエスケープ
(my $dec = $str) =~ s/%([a-f\d]{2})/pack 'H2', $1/egi;
from_to($dec, 'utf8', 'cp932'); # Winのコマンドプロンプトで表示するのでcp932にしてる
print $dec;
とりあえずこれで動いてるけど? ブラウザに出してるんなら、Shift_JISって解釈されてるとかじゃない??
0338デフォルトの名無しさん
2007/04/23(月) 00:01:31> $utf8str =~ s/%([a-f\d]{2}/pack('H2',$1)/egi;
$1のための括弧が閉じられてません。
あとは、UTF-8に対応したEditorで開いてないとかでしょうか。
上の式で正しくアンエスケープされました。
0339デフォルトの名無しさん
2007/04/23(月) 00:35:06>>337さんのスクリプトを実行したところ、文字化けしませんでした。
また、from_toする前でも、ファイルにリダイレクトして、
そのファイルをエディタで開いても同様に文字化けしていませんでした。
しかし、サーバに持って行ってブラウザに結果を出すと文字化けしてしまいます。
エディタはUTF-8に対応していて、Perlスクリプトもutf-8で保存して、
use utf8; use open ":utf8"; use open ":std";して、
print "Content-type: text/html; charset=utf-8\n\n";
いるのですが、
>>337さんのものでprint $dec;でもprint $str;でも駄目(文字化け)でした。
環境はWin XP SP2 + IE7、[表示]-[エンコード]でもUTF-8であることを確認しているのですが。。
。
度々で申し訳ないのですが、他に何か怪しい箇所がありますでしょうか?
0340デフォルトの名無しさん
2007/04/23(月) 00:49:03my $str = '%E8%B3%AA%E5%95%8F';
(my $dec = $str) =~ s/%([a-f\d]{2})/pack 'H2', $1/egi;
print "Content-Type: text/plainl; charset=utf-8\n\n";
print $dec;
__END__
とりあえず手元だとこれで動いてる。まずは問題の発生する最小限のコードまで切り詰めてみ?
0341337
2007/04/23(月) 01:17:20use open ":std";が余計でした(よく分からないのに「おまじない」で書くのは駄目でしたね)。
問題のスクリプトから上記を除いて、かつ、
自分で作って読んでいるモジュールからも上記を除きました。
本当にありがとうございます!
0342デフォルトの名無しさん
2007/04/23(月) 01:18:56標準入出力を使わないなら、use open ":std";等は確かに不要でした。
0343335
2007/04/23(月) 03:15:36use open ":std";を外せばアンエスケープで文字化けしないものの、
今度は後続処理でUTF-8な文字を処理できないという問題がありました。
結局、以下のサイトを参照して、
ttp://naoya.dyndns.org/~naoya/mt/archives/000611.html
use open ":std";は残したままで、アンエスケープ処理の後に
utf8::decode($str);でUTF8フラグを落とせば、
スクリプトへのUTF-8文字列の受け渡しも、後続処理も、うまく行きました。
夜更けにお答えくださって、本当にどうもありがとうございました。
これで安心して眠れそうです。
0344デフォルトの名無しさん
2007/04/23(月) 18:08:16http://mixi.jp/view_bbs.pl?id=17607679&comm_id=1401396
Perlに関すること、cgiに関すること
なんでも質問できるコーナーです(たとえばApacheとかでもOKとします!)
(Web系であればOK)
ルール:
Google検索で調べてわかるようなことでも質問してもOKです
(初心者のうちは、どの情報を取捨選択したらイイのかわからないと思うので)
回答してくださるかたは、暖かく質問者を迎えてやってください
o(^^o) (o^^)o
0345デフォルトの名無しさん
2007/04/23(月) 18:19:57コミュニティのタイトルとか説明文が凄く気になって仕方が無い。
PERL言語 CGI言語
コミュニティの説明
perl言語 cgi言語のコミュニティです
だそうです。。。
0347デフォルトの名無しさん
2007/04/24(火) 04:11:190348デフォルトの名無しさん
2007/04/24(火) 08:17:440349デフォルトの名無しさん
2007/04/24(火) 10:36:140350デフォルトの名無しさん
2007/04/24(火) 22:51:58最後に管理者がキレるに1票。
0351デフォルトの名無しさん
2007/04/25(水) 02:27:300352デフォルトの名無しさん
2007/04/25(水) 11:12:27「ググれカス」だの「マニュアル嫁」みたいな回答しか
返ってこなかったので、管理人にやさしく教えてくれる
ところが欲しかったんじゃないの?
0353デフォルトの名無しさん
2007/04/25(水) 12:06:40もちろんそうでしょ。
そうじゃなきゃルール書きの冒頭が「Google検索で調べて
わかるようなことでも」で始まるわけないっすよ。
0354デフォルトの名無しさん
2007/04/25(水) 12:33:510355デフォルトの名無しさん
2007/04/25(水) 17:38:480356デフォルトの名無しさん
2007/04/25(水) 19:00:43役に立たないものはない。
川に流してしまいたい。
0358デフォルトの名無しさん
2007/04/25(水) 21:32:050359デフォルトの名無しさん
2007/04/25(水) 22:08:090360デフォルトの名無しさん
2007/04/25(水) 23:13:460361デフォルトの名無しさん
2007/04/25(水) 23:27:060362デフォルトの名無しさん
2007/04/26(木) 09:20:12(===○=)/ センセー
__ / ⇔ / 話しについてけませーん
\⊂ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
...|| ̄ ̄ ̄ ̄||
0363デフォルトの名無しさん
2007/04/26(木) 22:17:39CGI言語と来たか・・・。
本当に作ってしまって混乱させるというのはどうか?
もちろんその言語はクライアントマシンの限られた
中でしか使えず、 Web の CGI になんて使えないのだ。
0364デフォルトの名無しさん
2007/04/26(木) 22:18:420365デフォルトの名無しさん
2007/04/26(木) 23:07:100366デフォルトの名無しさん
2007/04/26(木) 23:15:11池袋で乗車してきた女の子がハロプロエッグの子とかたかまりこ
0367デフォルトの名無しさん
2007/04/27(金) 11:39:270368デフォルトの名無しさん
2007/04/27(金) 11:57:030369デフォルトの名無しさん
2007/04/27(金) 15:28:360370デフォルトの名無しさん
2007/04/27(金) 15:34:310371デフォルトの名無しさん
2007/04/27(金) 17:29:180372デフォルトの名無しさん
2007/04/27(金) 18:13:20どうすればよろしいでしょうか?例えば、
dir c:\trash
の結果を取り込もうとしても、次のスクリプトではうまくいきません。
$files = `dir c:\\trash`;
print "The files are $files\n";
0373デフォルトの名無しさん
2007/04/27(金) 18:43:530374デフォルトの名無しさん
2007/04/27(金) 18:53:55手元だとそれでうまくいってるけど。
0375372
2007/04/27(金) 20:04:12すみません。書き忘れていました。>>10にある先頭の5行を入れていました。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
「use open IO => ":encoding(cp932)"; 」の行を削除して
次のように修正すると動きました。
use Encode;
$orgfiles = `dir c:\\trash`;
$files = decode('cp932', $orgfiles);
print "The files are $files\n";
0376デフォルトの名無しさん
2007/04/27(金) 21:23:44例によって cmd.exe /c dir ... じゃない?
0377デフォルトの名無しさん
2007/04/27(金) 21:24:530378デフォルトの名無しさん
2007/04/27(金) 21:35:08記号が多いから、とか?
0379デフォルトの名無しさん
2007/04/27(金) 22:21:10うんにゃ、LWPのUAがはじかれる件でしょ?
0380デフォルトの名無しさん
2007/04/27(金) 22:23:19Perlで書かれたボットの多くがLWPのデフォルトUser-Agentをそのまま名乗って
おり、403を食らうようになった。当然だがUAを変えれば通れる。
0381デフォルトの名無しさん
2007/04/27(金) 22:24:27今回のそれとは違うよな。
0382デフォルトの名無しさん
2007/04/27(金) 22:30:29そう責めるな
0383デフォルトの名無しさん
2007/04/28(土) 00:19:39それとも使う奴だけ手動でアップデートさせるしか方法ない?
0384デフォルトの名無しさん
2007/04/28(土) 00:39:19cpanシェルでupgrade
0385378
2007/04/28(土) 01:18:470386デフォルトの名無しさん
2007/04/28(土) 03:22:170387デフォルトの名無しさん
2007/04/28(土) 05:09:490388デフォルトの名無しさん
2007/04/28(土) 17:56:47Pealのeqとかみたいにさ
0389デフォルトの名無しさん
2007/04/28(土) 19:26:07なったと言っても数年前からだよ。
今頃騒いでるやつらはアンテナが低すぎると思ったのだった。
0390デフォルトの名無しさん
2007/04/29(日) 01:57:47char len1;
char word1[len1];
char len2;
char word2[len1];
char len3;
char word3[len1];
}
みたいな構造の可変長のバイナリなデータがあるんですが、
これをperlで綺麗でかっこよく展開する方法ってないですか?
今は下のようなことをしてるのですが、なんか見辛いし汚いので…
$data = "\4ABCD\3EFG\7HIJKLMN";
($len1,$data) = unpack("Ca*",$data);
($word1,$data) = unpack("a${len1}a*",$data);
($len2,$data) = unpack("Ca*",$data);
($word2,$data) = unpack("a${len2}a*",$data);
($len3,$data) = unpack("Ca*",$data);
($word3,$data) = unpack("a${len3}a*",$data);
print "$word1\n$word2\n$word3\n";
0391デフォルトの名無しさん
2007/04/29(日) 03:40:490392デフォルトの名無しさん
2007/04/29(日) 04:06:37perldoc -f pack して目を皿のようにして熟読せい。
The "/" template character allows packing and unpacking
of strings where the packed structure contains a byte
count followed by the string itself. You write
*length-item*"/"*string-item*.
0393デフォルトの名無しさん
2007/04/29(日) 05:12:56あああああ、そんなテンプレートがあったんですね。
日本語の5.6ベースのman見てたので気づきませんでした…
ありがとうございます。
0394デフォルトの名無しさん
2007/04/30(月) 02:59:39あ、すまん。
5.6からの拡張だと思ってたが、違ったか(393には問題ないみたいでよかった)。
0395デフォルトの名無しさん
2007/05/01(火) 17:38:05「置換する」「置換しない」(飛ばす)「残り全て置換」「キャンセル」という
処理を行うにあたって、見つけた文字列を置換せずに飛ばして次を置換する
方法が思いつきません。置換しないテキストは適当な文字列に置換しておいて
最後に戻すという方法も考えたのですが、あまりスマートではないと思いまし
た。何かよい方法があったら、お知恵をお貸しください。
while($text =~ /($regexp)/) {
if($all == 0) {
$before = $1;
$after = $1;
$after =~ s/$regexp/$replace/m;
print "置換前:\n$before\n置換後:\n$after\n";
do {
print "置換する? [y]es [n]o [a]残り全て [g]キャンセル ";
$key = <STDIN>;
chomp($key);
} while ($key ne "y" and $key ne "n" and $key ne "a" and $key ne "g");
if($key eq "y"){
$text =~ s/$regexp/$replace/m;
}elsif($key eq "n"){
# ここをどうする?
}elsif($key eq "a"){
$text =~ s/$regexp/$replace/gm;
$all = 1;
}else{ exit; }
}elsif($all == 1) {
$text =~ s/$regexp/$replace/gm;
}
}
0396395
2007/05/01(火) 17:39:43置換後の文字列です。
0397デフォルトの名無しさん
2007/05/01(火) 17:51:02ヒント: posと\G
perl -e '$x = "aaaaaa"; pos($x) = 2; $x =~ s/\Ga/x/; print $x,"\n";'
aaxaaa
0398395
2007/05/01(火) 21:09:08$p = 0;
while($text =~ /\G(?:.*\n)*?.*?($regexp)/gm) {
$p = pos($text) - length($1);
pos($text) = $p;
if($all == 0) {
$before = $1;
$after = $1;
$after =~ s/$regexp/$replace/m;
print "置換前:\n$before\n置換後:\n$after\n";
do {
print "置換する? [y]es [n]o [a]残り全て [g]キャンセル ";
$key = <STDIN>; chomp($key);
} while ($key ne "y" and $key ne "n" and $key ne "a" and $key ne "g");
if($key eq "y"){
$text =~ s/\G$regexp/$replace/m;
pos($text) = $p + length($after);
}elsif($key eq "n"){
pos($text) = $p + length($before);
}elsif($key eq "a"){
$text =~ s/\G$regexp/$replace/gm;
$all = 1;
}else{
exit;
}
}elsif($all == 1) {
$text =~ s/\G$regexp/$replace/gm;
}
}
0399デフォルトの名無しさん
2007/05/01(火) 21:31:38最後の全置換は絶対うまくいかんだろ
0400デフォルトの名無しさん
2007/05/01(火) 22:01:180401395
2007/05/01(火) 22:02:38と、置換される文字列に改行が含まれている際に、オプション"g"をつけても
複数置換してくれなくなってしまうのですが、どうすればいいんでしょうか。
perl -e '$text = "a\na\na"; $text =~ s/\Ga/b/gm; print "$text\n";'
結果:
b
a
a
perl -e '$text = "aaa"; $text =~ s/\Ga/b/gm; print "$text\n";'
結果:
bbb
perl -e '$text = "a\na\na"; $text =~ s/a/b/gm; print "$text\n";'
結果:
b
b
b
0402デフォルトの名無しさん
2007/05/01(火) 22:23:56あとを置換しながらposを保持することはできないのでコピーを作ることを考えてみては
自分ならこう書く
my $replaced_text;
pos $text = 0;
while (pos $text < length $text) {
if ($text =~ m/\G $regexp/gcsx) {
# ここで入力による分岐処理を行う
}
elsif ($text =~ m/\G(.+?) (?=$regexp)/gcsx) {
$replaced_text .= $1;
}
else {
$text =~ m/\G (.*)/gcsx;
$replaced_text .= $1;
}
0403デフォルトの名無しさん
2007/05/01(火) 22:28:17my $mode;
$text =~ s{($regexp)}{
my $r;
if (!defined $mode) {
my $key;
do {
print "置換する? [y]es [n]o [a]残り全て [g]キャンセル ";
$key = <STDIN>;
chomp($key);
} while ( $key ne "y"
and $key ne "n"
and $key ne "a"
and $key ne "g" );
if ($key eq 'y') {
$r = $replace;
} elsif ($key eq 'n') {
$r = $1;
} elsif ($key eq 'a') {
$mode = 'a';
} else {
$mode = 'g';
}
}
if ($mode eq 'a') {
$r = $replace;
} elsif ($mode eq 'g') {
$r = $1;
}
$r;
}gme;
0404395
2007/05/01(火) 23:34:11おお、これはすごい、正規表現でループができるんですね。
>>403の方法できれいなスクリプトになりました。ありがとうございます。
0405デフォルトの名無しさん
2007/05/02(水) 03:13:40インストールするごとに[1]とか[2]とか増えるのはなんなんでしょうか?
0406デフォルトの名無しさん
2007/05/02(水) 03:44:02現在実行したコマンドを識別するIDみたいなもの。
何に使ってるかまでは見てないけど。
ちなみに↓とやるとIDを変えてしまうこともできる。特に意味はない。
cpan[1]> ! $CPAN::CurrentCommandId = 100;
0407デフォルトの名無しさん
2007/05/02(水) 05:56:50レスありがとうございます。
そうなんですか。
なんか Bundle::CPAN をインストールしてからそうなったような気がしたので、
間違えたかと思いました。
そのような情報ってどこで得ているのでしょうか?
0408デフォルトの名無しさん
2007/05/02(水) 09:35:320409デフォルトの名無しさん
2007/05/02(水) 14:03:43知らないけど、ヒストリ用では?
よくUNIX用のシェルであるんだけど、 ! の直後にその番号入れて
実行するとその番号のコマンドが動くんだよ。全く同じなら再入力
する必要がないの。(更に後ろに :s/// のようなのを付けて文字列
置換できたりもする。 !30:s/aa/bb/ みたいな。全てのシェルが
同じこと出来るかどうかは知らないが)。
0410デフォルトの名無しさん
2007/05/02(水) 21:18:490411デフォルトの名無しさん
2007/05/02(水) 21:20:370412デフォルトの名無しさん
2007/05/03(木) 06:35:392つのファイル a.txt と b.txt を比較して、条件にあった行を抽出、出力するスクリプトを作りたいのです。
具体的には、
[a.txt]
ID, field1, field2
1, 5.8, 7.3
2, 6.3, 8.2
3, 3.2, 4.1
4, 4.8, 4.0
5, 8.3, 10.2
[b.txt]
ID, field1, field2
1, 6.8, 7.7
3, 4.3, 5.5
4, 5.9, 4.9
というファイルがあったとき、b.txt のIDに数値が存在する行だけを a.txt から抽出して a2.txt として保存したいのです。
[a2.txt]
ID, field1, field2
1, 5.8, 7.3
3, 3.2, 4.1
4, 4.8, 4.0
と言った具合にです。よろしくお願いします。
0413デフォルトの名無しさん
2007/05/03(木) 07:47:00use strict;
use warnings;
open my $a, '<', 'a.txt' or die;
open my $b, '<', 'b.txt' or die;
my %ids = map { $_ => 1 } map { (split /,/)[0] } <$b>;
while (<$a>) {
my $id = (split /,/)[0];
print if $ids{$id};
}
0414412
2007/05/03(木) 08:00:05早速のレス、ありがとうございます。助かりました。
こんなに簡単にできちゃうんですね。しかし、私にはスクリプトの内容は不明...。解読して勉強させていただきます。
0415デフォルトの名無しさん
2007/05/03(木) 13:36:22sub func {
my $file = shift(@_);
my $input = IO::File->new($file,"r") or die;
ごにょごにょ
・
・
}
$filename = (ディレクトリからファイルネームをとるロジック);
&func($filename);
みたいに書くと、一番最初にいきなりファイルオープンのエラーが出ます。
その後、ファイルネームをとるロジックが走ってる模様…。
何故か解らないのですが原因解りますでしょうか。
0416デフォルトの名無しさん
2007/05/03(木) 13:48:01原因はわかりますよ。
あんたが、そう動くようにプログラムを作ったから。
0418415
2007/05/03(木) 14:26:25サブルーチンが先に実行される事なんてあるのか…?
0419デフォルトの名無しさん
2007/05/03(木) 14:50:10まあエラーメッセージでも貼ってみ
0421デフォルトの名無しさん
2007/05/03(木) 15:08:03訳したりせずにそのまま貼れ
0422415
2007/05/03(木) 15:16:54だけです。
CentOS4.4、perl5.8.5です。
0423415
2007/05/03(木) 15:30:01>>422さん、親身になってくれてありがとうございます。
くだらないミスで申し訳ありません。
本当にすみませんでした。
0424デフォルトの名無しさん
2007/05/03(木) 15:40:40s/422/421/g;
0425デフォルトの名無しさん
2007/05/03(木) 15:47:38my $fp_in = IO::File->new($filename, "<") or die qq(cannot open '$filename': $!);
0427デフォルトの名無しさん
2007/05/05(土) 14:17:500428デフォルトの名無しさん
2007/05/05(土) 14:26:54略じゃないよ。
噛み切るとかそんな感じ。
0429デフォルトの名無しさん
2007/05/05(土) 14:41:240430デフォルトの名無しさん
2007/05/05(土) 14:43:410431デフォルトの名無しさん
2007/05/05(土) 15:30:31具体的には、親パッケージが子パッケージをuseしているとき、
子パッケージから親パッケージのサブルーチンを呼べません。
Giko.pm
[-------
package Giko;
use Giko::Mona;
(omaemonaサブルーチンをEXPORTしている)
sub omaemona { .... }
-------]
Giko/Mona.pm
[-------
package Giko::Mona;
-------]
となっていた場合、
Giko::Monaの中でomaemonaを呼ぶ方法は、Giko::omaemonaしかないでしょうか?
Giko::Monaでuse Gikoはできないし、use base 'Giko';は違うみたいですし。
0432デフォルトの名無しさん
2007/05/05(土) 17:12:46「�@」「�A」や「�T」「�U」などを
sjis <-> euc-jp 変換すると文字化けしてしまいます。
回避するにはどうすればいいでしょうか?
0433デフォルトの名無しさん
2007/05/05(土) 19:33:33つEncode::EUCJPMSのcp51932
0434デフォルトの名無しさん
2007/05/05(土) 20:32:560435デフォルトの名無しさん
2007/05/05(土) 20:40:22Giko/Mona.pm
[-------
package Giko::Mona;
package Giko;
-------]
0436431
2007/05/06(日) 01:14:39>>435
なるほど。
まとめると巨大ファイルになりがちで不安だったのですが、
今のところはまだなんとか1ファイルにまとめられそうなので、
同じファイルスコープで仲良く共存してみます。
ありがとうございました。
0437デフォルトの名無しさん
2007/05/06(日) 17:12:14( split /\//, $x )[0 .. bar];
リストの末尾要素を除いたリストを返す方法、知りませんか?
barをどう記述すりゃいいのやら。
Perl ならできそうな気がするんですが。思い当たりません。
検索してみたものの、それらしいものも見つけられません。
0438デフォルトの名無しさん
2007/05/06(日) 17:31:22じゃダメなの?
0439デフォルトの名無しさん
2007/05/06(日) 17:43:01尻尾だけ消すのじゃだめなの?
0440デフォルトの名無しさん
2007/05/06(日) 17:44:40でいいんだけど、範囲演算子で(〜)[0..-1]とは書けないんだよな。
配列変数なら@x[0..$#x-1]という書き方もあるが、リストでは$#xに
相当するものが書けない。
とりあえずおもいついたのはこれ。
sub{@_[0..$#_-1]}->(〜)
0441デフォルトの名無しさん
2007/05/06(日) 18:03:14@list = split(/\/(?=.+\/)|\/.+$/, $x)
とかやってないで、全部入れてから$#list--すればいいんじゃね?
0442デフォルトの名無しさん
2007/05/06(日) 18:31:19首チョンパの略と思ってた
0443デフォルトの名無しさん
2007/05/06(日) 18:38:52やがてより安全なchomp生まれり。
0444デフォルトの名無しさん
2007/05/06(日) 18:52:280445デフォルトの名無しさん
2007/05/06(日) 19:51:310446デフォルトの名無しさん
2007/05/06(日) 20:19:010447デフォルトの名無しさん
2007/05/06(日) 20:35:560448デフォルトの名無しさん
2007/05/06(日) 21:07:48(split /\//, $x)[0..(split /\//, $x)-2]
0449デフォルトの名無しさん
2007/05/06(日) 21:21:14scalar contextのsplitは@_を上書きしちゃうからねぇ。
0450デフォルトの名無しさん
2007/05/06(日) 22:19:220451デフォルトの名無しさん
2007/05/07(月) 00:17:23my $str = 'foo/bar/baz/quux';
sub p { printf ">>%d:[%s]\n", shift, join ',', @_ }
p(438, (my @arr, undef) = split m{/}, $str);
p(439, do { @arr = split m{/}, $str; pop @arr; join ',', @arr }); # & >>444-445
p(440, sub { @_[ 0 .. $#_ - 1 ] }->(split m{/}, $str));
p(441, split m{/(?=.+/)|/.+$}, $str);
p(446, splice @{[ split m{/}, $str ]}, 0, -1);
p(448, (split m{/}, $str)[ 0 .. (split m{/}, $str) - 2 ]);
p(450, (split m{/}, $str)[ 0 .. $str =~ tr|/|/| - 1 ]);
p(451, $str =~ m{(.+?)/}g);
0452デフォルトの名無しさん
2007/05/07(月) 00:52:33my $str = 'foo/bar/baz/quux';
を
my $str = '/foo/bar/baz/quux/';
にすると、いろいろ違いが出てくるね。
0453デフォルトの名無しさん
2007/05/07(月) 00:58:21重箱の隅つつき。
p(451 の行の正規表現。(.+?) ではなく(.*?) でなければ
split を用いた他の例と挙動が違うぞ。
$str = q{/foo/bar/baz/quux} で確かめろ。
0454437
2007/05/07(月) 01:10:11>440
単純な範囲演算子で記述できそうに思った私が考え足らずだったようです。
sub { @_[0 .. $#_ - 1] }->(split /\//, $x) は見た目にわかり易いですね。
いろいろ応用できそうだし。しかし、私は露とも思い至りませんでした。
>441
まぁ、そうなんですよね。
$file = "/usr/local/bin/bar"; # ファイル名が与えられて。。。
$fold = join "/", 〜split /\//, $file を使った記述〜; # フォルダ名を得る。
ここで余分に変数を使わず、可読性も損なわない方法がありそな気がしたもので。
>446
splice の第一引数はARRAYしかダメだと諦めてしまったのです。
リファレンスについて熟知すると、こんなやり方に気付くんですね。
自分の頭の硬さとリファレンスに対する理解の浅さを恥じて
精進したいと思います。
まず、>440 さんと >446 さんの方法、どっちを使うか悩みます。
0455デフォルトの名無しさん
2007/05/07(月) 01:17:53いいからFile::Specを使え。
0456デフォルトの名無しさん
2007/05/07(月) 01:19:48いや、可読性が低下するから、いったん配列に入れてからスライスした方がいいと思うぞ
上のは遊びなんだから
0457デフォルトの名無しさん
2007/05/07(月) 02:28:37Dだと [0 .. $ - 1] でいけるんだが。
0458デフォルトの名無しさん
2007/05/07(月) 05:57:16しかし落ち着いて俯瞰すればこういう雑用の可読性を気にする時点でそのソース全体が残飯ですね。
0459デフォルトの名無しさん
2007/05/07(月) 08:33:53標準のキーボードから入力を受け取ってどうやれば入力を反映させれるかわからないです・・・
#!/usr/local/bin/perl -w
require 'jcode.pl';
print"あなたはどれを使いますか?<br/>\n1:ドラゴン<br/>\n2:ゴーレム<br/>\n3:こねこ<br/>\n";
while(<>){
if($_=m/3/){print"これはこねこ"};
};
↑これでは3を入力するたびに、これはこねこって出てくるんですが、
#!/usr/local/bin/perl -w
require 'jcode.pl';
print"あなたはどれを使いますか?<br/>\n1:ドラゴン<br/>\n2:ゴーレム<br/>\n3:こねこ<br/>\n";
while(<>){
if($_=m/3/){print"これはこねこ";$kyara=3}
elsif($_=m/2/){print"これはゴーレム";$kyara=2};
};
これのelsif文が実行されないぽいんですがなんででふか?
頭硬くてすみません・・・
0460デフォルトの名無しさん
2007/05/07(月) 09:30:09でなにをやっているのか良く考えてみ。
0461デフォルトの名無しさん
2007/05/07(月) 11:52:54$_=m/3/ の部分を$_==3 にすると、うまく行きました!
最初$_==3でエラーが出て、良くわからなくて正規表現にすればうまくいくかなとか思って$_=m/3/に直して、(他の部分も少し直して、)それで3の時うまくいったのでてっきり正解かと思いこんでました。
$_=m/3/を$_==3と同じ意味で使ったつもりだったけど、動作は違うんですね。
もうちょっと調べてきます。
ありがとうございました。
0462デフォルトの名無しさん
2007/05/07(月) 12:40:19正規表現、はじめてで意味もよく知らずに=m/3/とかしてたけど、=~/3/とするのが正しかったんですね(汗
==3にすると数字以外の時の入力で(変数は数字ではありませんみたいな)無駄なエラーが出たけど=~/3/ならそういう変なエラーも出ないみたいなので=~/3/を使うことにしました!
↓
$kyara=4;
while($kyara==4){
$_=<STDIN>;
if($_=~/3/){print"これはこねこ";$kyara=3}
elsif($_=~/2/){print"これはゴーレム";$kyara=2}
elsif($_=~/1/){print"これはドラゴン";$kyara=1};
};
もうちょっとがんばってきます!
0463連カキスマソ
2007/05/07(月) 13:11:33if($_=~/3/){処理1}
elsif($_=~/2/){処理2}
とすると、3でも23でも32でも先に$_=~/3/にマッチしてしまう(32なんかは$_=~/2/にマッチさせたい)ので、ちょっと修正しました。
↓
#!/usr/local/bin/perl -w
require 'jcode.pl';
print"あなたはどれを使いますか?<br/>\n1:ドラゴン<br/>\n2:ゴーレム<br/>\n3:こねこ<br/>\n";
$kyara=4;
while($kyara==4){
$_=<STDIN>;
if($_=~/3$/){print"あなたはお昼ね好きのこねこを選びました☆";$kyara=3}
elsif($_=~/2$/){print"あなたはお人よしのゴーレムを選びました☆";$kyara=2}
elsif($_=~/1$/){print"あなたは気の強いドラゴンを選びました☆";$kyara=1};
};
print "(番号=)$kyara";
↑
これなら33111とかって入力でも3ではなく1のドラゴンとして判断してくれます☆
正規表現って便利ですね☆
>>460さん、アドバイス�dクスでした!
0464デフォルトの名無しさん
2007/05/07(月) 13:18:31そこで更に便利な連想配列をどうぞ
0465デフォルトの名無しさん
2007/05/07(月) 13:19:130466460
2007/05/07(月) 16:10:24なんか前向きなやつだなw
どっかの知恵袋のとは大違いだ。
ちょっと補足しておくと、Perlの場合処理対象の
変数を省略できることが多い。
たとえば $_ =~ /1/ なら /1/とか。
$_ = m/1/ と書いちゃうと、マッチの結果を
$_ に代入と解釈されて前の値を壊しちゃう。
ほかにもいろいろあるが長くなるので書かない。
まあがんばれ。
0467デフォルトの名無しさん
2007/05/07(月) 16:18:010468デフォルトの名無しさん
2007/05/07(月) 17:04:17$inkey = <STDIN>;
これで読み取ったときって改行コード入ってない?
そこらへんも気をつけたほうがいいかな
0469デフォルトの名無しさん
2007/05/07(月) 17:27:02Parse対象のXMLにエラーがあった場合に、ユーザー関数をコールバックさせようと考えています。
デフォルトだと
mismatched tag at line **, column **, byte ***, at
/user/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/XML/Parser.pm
line 187
のように出力されてdieします。
0470デフォルトの名無しさん
2007/05/07(月) 17:27:31をみると、ParserがnewされるところでErrorHandlerに自分で作ったもの(例えばMyErrorHandler等)を指定すればよさそうなのですが、具体的になんという名前の関数を用意し、どのタイミングで呼び出されるかなど、よくわかりませんした。
すみませんが、どなたかお分かりでしたらアドバイスをください。
0471デフォルトの名無しさん
2007/05/07(月) 18:14:52ErrorHandlerに無名サブルーチンを渡しておけばパースに失敗したときにコールバックしてくれるんじゃないの?
0472デフォルトの名無しさん
2007/05/07(月) 18:37:28俺も使ったことないけど、フツーに考えて
$parser->{ErrorHandler}で例外をキャッチできるってことなんじゃなないの?
0473デフォルトの名無しさん
2007/05/07(月) 18:59:18�dクスです!参考にして少し書き換えました!
#!/usr/local/bin/perl -w
require 'jcode.pl';
print"あなたはどれを使いますか?<br/>\n1:ドラゴン<br/>\n2:ゴーレム<br/>\n3:こねこ<br/>\n";
while (<>){
if (/[1-3]$/) {chop;$kyara=chop;last;}
};
if($kyara==1){print"あなたはお昼寝好きのこねこを選びました☆"}
elsif($kyara==2){print"あなたはお人好しのゴーレムを選びました☆"}
elsif($kyara==3){print"あなたは強気なドラゴンを選びました☆"};
while (<>){};
こんな感じに☆
>>464さん>
必要になってからがんがります☆(コラ
0474デフォルトの名無しさん
2007/05/07(月) 19:00:380475デフォルトの名無しさん
2007/05/07(月) 19:10:560476デフォルトの名無しさん
2007/05/07(月) 19:14:490477デフォルトの名無しさん
2007/05/07(月) 19:27:33配列や printf を覚えて欲しくなるけど、楽しみながらコツコツやってそうでいいな。
0478デフォルトの名無しさん
2007/05/07(月) 19:38:06ああ、大きなキメラが入るよ。 今年一番の大幅改良だ。
0479デフォルトの名無しさん
2007/05/07(月) 21:43:44俺は車輪を10も20も発明していたらしい。すばらしい!
0480デフォルトの名無しさん
2007/05/07(月) 23:31:32そいつらと鉢合わせずに済むか、を考えるのが難しいかも。
0481473
2007/05/07(月) 23:32:46print system("cls");
と書くと、PCではちゃんと画面クリアしてくれるんですが、サーバにアップしたら画面クリアしてくれませんでした。
ブラウザの画面をクリアする方法って無いんでしょうか・・?
あと、サーバにアップしたら、
while (<>){
if (/[1-3]$/) {chop;$kyara=chop;last;}
};
という部分も全て無視されました。
たぶん、while(<>)の部分がサーバでは無視されてしまってるんだと思うんですが、
どうすれば良いですか?
HTMLでフォームを表示させてそこから入力させるしか無いのでしょうか?
0482デフォルトの名無しさん
2007/05/08(火) 00:03:55そもそも 「コンソールとブラウザの挙動を勉強してください」 としかいえない
ブラウザに対して print ""; でえぇんとちゃうのんかと
STDIN になんもデータ無いからあたりまえです
0483デフォルトの名無しさん
2007/05/08(火) 01:16:200484デフォルトの名無しさん
2007/05/08(火) 02:59:42荒らし以前に板違い。>>1 嫁
0485デフォルトの名無しさん
2007/05/08(火) 05:32:43CGI以外の純粋なperlのみって書いてありますね。
気をつけます。
>>482
なんとなく理解しました。
clsをclearとしても無理だったので普通にフォームからの入力にします。
ご迷惑かけてすみませんでしたm(__)m
0486デフォルトの名無しさん
2007/05/08(火) 09:09:04「大幅改良っ!!キメラぁぁ!!おにいちゃんかっこいいいいぃぃぃい ぃくううううう!」
0487デフォルトの名無しさん
2007/05/09(水) 14:52:59JavaScript 埋め込んでクリアすれば良いんじゃない?
0488デフォルトの名無しさん
2007/05/10(木) 13:07:53・ローカル変数の一覧を取得する方法
・ハッシュの内容をローカル変数に一括して設定する機能(PHPのextract()関数に相当する機能)
があれば教えてください。
0489デフォルトの名無しさん
2007/05/10(木) 13:32:01use Dumpvalue とか。
hashの展開はこんなんでいけるだろ。
while (($key, $value) = each %hash) {
eval("\$$key = \$value");
}
ただし任意のキーが使われる場合はexploitになるんで別の方法で。
0490デフォルトの名無しさん
2007/05/10(木) 13:56:22いいと思うよ。たぶんろくなことにならない。
0491デフォルトの名無しさん
2007/05/10(木) 14:20:02「Perl "HTML::Entities" インストール」でぐぐってもヒットせず困ってます。
0492デフォルトの名無しさん
2007/05/10(木) 14:58:35OSは?
0493デフォルトの名無しさん
2007/05/10(木) 15:06:48ピンと来ないし何だろう。「レン鯖で使いたい」なのかな。
0494491
2007/05/10(木) 15:50:52Linuxです。Perl5.8。
>>493
その通り、海外のレンタルサーバーです。
ただ今はロ−カルのMacでやってるんで、CPANにトライしてみたんですが、最初にいろいろ英語できいてきて、適当に答えてたら設定がおかしくなったのか、
cpan install HTML::Entities
がfetchできないとかでインストールできませんでした。
CPANむずい・・・
0495デフォルトの名無しさん
2007/05/10(木) 16:01:10要するに、ロ−カルのMacにインストールできずに
> CPANむずい・・・
と言ってるわけだ。
こんなこと言っている人がCPANなしでレンタルサーバにインストール
しようってわけね。考えるだけ時間の無駄というものでしょう。
0496デフォルトの名無しさん
2007/05/10(木) 16:04:37READMEに書いてあるじゃん
0497デフォルトの名無しさん
2007/05/10(木) 16:18:17perl Makefile.PL && make && make install
だけどcpanの英語がわからんとか言ってるレベルじゃもっと無理じゃね?
0498491
2007/05/10(木) 18:34:51HTML::EntitiesはHTML::Parserの一部ということでしょうか。
試しにHTML::Parserをインストールしてみると・・・たしかにHTML::Entitiesも印ストールされました。
貴重なヒントをありがとうございました。
#こんな情報どこにあるんですか。http://www.xav.com/perl/site/lib/HTML/Entities.html とか見ても書いてないし。
ちなみにHTML::ParserはMacPortsをつかって
sudo port install p5-html-parser
でいけました。CPANは難しくて分からなかった人でもMacPortsなら楽勝!MacPorts万歳!
0499デフォルトの名無しさん
2007/05/10(木) 18:37:450500デフォルトの名無しさん
2007/05/10(木) 19:02:37http://search.cpan.org/dist/HTML-Parser/lib/HTML/Entities.pm
0501デフォルトの名無しさん
2007/05/10(木) 19:08:36http://search.cpan.org/ をブックマークしておくといいね。
0502デフォルトの名無しさん
2007/05/10(木) 19:08:43cpanモジュールなんだからcpanで調べろよ。
search.cpan.orgでHTML::Entitiesをサーチすれば一番上に出てくる
ttp://search.cpan.org/~gaas/HTML-Parser-3.56/lib/HTML/Entities.pm
を見れば一発でわかるだろ。
0503デフォルトの名無しさん
2007/05/10(木) 22:17:13大きく二つのフレームから構成しています。
1.左フレーム
2.右フレーム
この二つのフレームにそれぞれScrollbarを設けたいのですが、
Frameウィジェットには何故か-yscrollbarオプション等が無く
Scrollbarウィジェットを動作させることができません。
Scrolledで強引に取り付けると、レイアウトがおかしくなります。
どうおかしくなるかというと、
1.Frame内部のウィジェットの配置が決まらない
(HTMLでいう、alignやvalignが効かない)
2.そもそも、実行時にワーニングのような表示が出る(実行はできる)
1.に関しては、スクロールバーを外せば正常に(期待通りに)配置されます。
Tkを使用される方は、こういうフレーム分けしたレイアウトで、
かつ各フレームにスクロールバーを表示させたい場合、どのような
ウィジェットの使い方をされるのか、教えていただけないでしょうか。
0504デフォルトの名無しさん
2007/05/10(木) 22:51:49Tk::Pane provides a scrollable frame widget.
Once created it can be treated as a frame, except it is scrollable.
自己解決です。
スレ汚し申し訳ありません。
0505デフォルトの名無しさん
2007/05/10(木) 23:08:52それぞれウィジェットを作って、その中で更にスクロールバーを設けるんでないかい
0506デフォルトの名無しさん
2007/05/10(木) 23:09:22リロードしときゃよかった
0507デフォルトの名無しさん
2007/05/11(金) 02:34:36に相当するような配列の表現はありますか?
0508デフォルトの名無しさん
2007/05/11(金) 02:56:54できるならやろうと思ってることも
0509デフォルトの名無しさん
2007/05/11(金) 03:40:44みたいな部分を、
($name, $age, $sex) = @foo;
とかで済ませられないかと
0510デフォルトの名無しさん
2007/05/11(金) 05:02:32my $str = 'name=名前,age=年齢,sex=性別';
my ($name, $age, $sex) = $str =~ /name=(.*),age=(.*),sex=(.*)/;
正規表現がアホなのは見逃して。
0511デフォルトの名無しさん
2007/05/11(金) 08:22:51パターンマッチってリストで評価するとそれが返ってくるんだ
よくできてるなあ
でも、
my ($name, $age, $sex) = $str =~ /name=(.*),age=(.*),sex=(.*)/ || next;
という使い方はさすがに無理だった
0512デフォルトの名無しさん
2007/05/11(金) 09:18:49ヒントは演算子の優先順位
(my ($name, $age, $sex) = $str =~ /name=(.*),age=(.*),sex=(.*)/) || next;
または
my ($name, $age, $sex) = $str =~ /name=(.*),age=(.*),sex=(.*)/ or next;
0513デフォルトの名無しさん
2007/05/11(金) 09:34:40普通にパターンマッチをスカラーで評価した時は、
マッチしたかどうかを返すのに対して、
パターンマッチのリストでの評価の代入の評価は、
リストの要素数だから、動作は同じでも意味は違いますよね
0514デフォルトの名無しさん
2007/05/11(金) 09:47:230515デフォルトの名無しさん
2007/05/11(金) 11:34:000516デフォルトの名無しさん
2007/05/11(金) 11:37:09入会申込書とかの該当欄に「週2回」って書いたたちか?
0517デフォルトの名無しさん
2007/05/11(金) 11:54:300518Aransk
2007/05/11(金) 13:09:15何かこちらが勘違いしていたら、ゴメン。
でも、
my @foo=qw(joe 25 male);
my ($name, $age, $sex) = @foo;
print $name,"\n";
print $age,"\n";
print $sex,"\n";
って普通に出来るけど?
0519デフォルトの名無しさん
2007/05/11(金) 13:12:300520デフォルトの名無しさん
2007/05/11(金) 13:19:370521デフォルトの名無しさん
2007/05/11(金) 17:13:50木の実の問題だが、next / last を絡めると途端に可読性が低くなる
気がする。next を絡める予定なら普通に
next if $str !~ /name=(.*),age=(.*),sex=(.*)/ ;
my ($name, $age, $sex) = ( $1, $2, $3 );
でいいじゃんと遅レス。
0522デフォルトの名無しさん
2007/05/11(金) 17:41:10Webで拾った以下の数値切り上げ関数を使用しています。
----------------------------------------
$one = ceil(19.1); # $one = 20
sub ceil {
my $var = shift;
my $a = 0;
$a = 1 if($var > 0 and $var != int($var));
return int($var + $a);
}
----------------------------------------
しかし、このceil関数に、(4.4 * 6000)という数値(26400)を引数として計算すると、26401が帰ってきます。
perl -e 'print sprintf("%.50f", (4.4 * 6000));';
を実行すると、
26400.00000000000363797880709171295166015625000000000000
という結果が返ってきました。
これを回避して、期待したとおりの切り上げ結果を返すにはどうすればいいでしょうか?
0523デフォルトの名無しさん
2007/05/11(金) 17:54:28そのceil関数は整数じゃなければ1足すってだけだろ
0524デフォルトの名無しさん
2007/05/11(金) 17:56:06丸め誤差でググっとけ。
perl -e 'print sprintf("%.50f", int((4.4 * 6000) * 1e6) / 1e6);'
0525デフォルトの名無しさん
2007/05/11(金) 18:02:20銀行の丸めは1桁が偶数のときに小数点以下があれば繰り上げだったっけ?
詳細忘れた
0526デフォルトの名無しさん
2007/05/11(金) 18:05:36今回は全く関係ない。
0527デフォルトの名無しさん
2007/05/11(金) 18:27:480528デフォルトの名無しさん
2007/05/11(金) 18:34:21> これを回避して、期待したとおりの切り上げ結果を返すにはどうすればいいでしょうか?
そんなどこの馬の骨ともわからないサブルーチンを使わずに、CPANで
Math-RoundとかMath-Round-Varとか拾ってきて見てみる。
実地の科学技術計算で使われている、充分な仕様のものがあるはず。
0529デフォルトの名無しさん
2007/05/11(金) 19:10:59$a = 1 if($var > 0 and $var != int($var));
ここの後半の比較式を
int($var) != int($var+0.9999・・・)
にするとか
0530デフォルトの名無しさん
2007/05/11(金) 20:54:42どこの馬の骨かわからないきがしなくもない
0531デフォルトの名無しさん
2007/05/11(金) 21:10:46有名な馬の骨もいるから気をつけな。
0532デフォルトの名無しさん
2007/05/11(金) 21:20:420533デフォルトの名無しさん
2007/05/11(金) 21:24:12現状はまさにそんな感じなんだけど、
($1, $2, $3) っていちいち書くのがなんか気持ち悪くて
どうせ内部で持ってそうなデータなのに
というのが質問の発端
0534デフォルトの名無しさん
2007/05/11(金) 21:25:39数直線の右に丸めるか左に丸めるかが
言語によって違うよね
0535デフォルトの名無しさん
2007/05/11(金) 21:26:440536デフォルトの名無しさん
2007/05/11(金) 22:07:130537デフォルトの名無しさん
2007/05/11(金) 22:10:48ループで回したら?
0538デフォルトの名無しさん
2007/05/11(金) 22:13:24use File::Slurp;
してread_dir
0539デフォルトの名無しさん
2007/05/11(金) 22:13:51で、処理後は closedir で後始末を。
サブディレクトリも探したいなら再帰でググればヒントは見つかるかと思います
0540デフォルトの名無しさん
2007/05/11(金) 22:16:590541デフォルトの名無しさん
2007/05/11(金) 22:25:070542536
2007/05/11(金) 23:47:01readdirをwhileでぶん回す方法でやってみます
0543デフォルトの名無しさん
2007/05/12(土) 00:51:52Unixのfindを使ったことがあるならfind2perlでPerlのコードを生成できるよ。
File::Find
http://search.cpan.org/~nwclark/perl-5.8.8/lib/File/Find.pm
0544デフォルトの名無しさん
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
0545デフォルトの名無しさん
2007/05/12(土) 02:58:460546デフォルトの名無しさん
2007/05/12(土) 03:16:52sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ }
こんなんどうよ。
0547デフォルトの名無しさん
2007/05/12(土) 03:25:10うごかなくて悩んでた。
eqじゃなくて==を使っていたぜorz
0548544
2007/05/12(土) 03:50:18おお、ありがとうございます。
再帰を使うと意外とすっきり書けるもんですね。
頭が硬直化して思いつきませんでした。
ありがたく使わせていただきます。
0549デフォルトの名無しさん
2007/05/12(土) 04:16:20パスのダメ文字が不完全だから、想定外の動作をする。
0550デフォルトの名無しさん
2007/05/12(土) 04:17:18○パスのダメ文字への対応が不完全だから
0551デフォルトの名無しさん
2007/05/13(日) 02:20:04それをperldocで調べようとすると、どういう風にコマンド叩けばいい?
そういう調べものにはperldocは向かない?
0552デフォルトの名無しさん
2007/05/13(日) 03:04:180553デフォルトの名無しさん
2007/05/13(日) 12:02:01して
Reference Manualのカテゴリーからあたりを見つけられるぐらいには慣れておいても損はないかも
0554デフォルトの名無しさん
2007/05/13(日) 14:26:50というコードで、クラス名を動的に指定するにはどうしたらいいですか。
$klass = 'Foo::Bar::Baz';
my $obj = eval "new $klass(¥$arg)";
$@ and die($@);
のようにevalを使うしかないのでしょうか。なんかもっとスマートな方法があるような気がします。
むしろパッケージが別ファイルならロード時にevalしる
my $class = "Foo::Bar";
eval "require $class;"
die $@ if $@;
$class->new;
イマドキはUNIVERSAL::requireなんでしょうけど
0556デフォルトの名無しさん
2007/05/13(日) 16:45:48----
package Foo::Bar::Baz;
sub new{ bless [] }
sub qux{ print "qux!!" }
package main;
eval{
my $klass = "Foo::Bar::Baz";
my $obj = new $klass;
$obj->qux;
};
0557デフォルトの名無しさん
2007/05/13(日) 16:49:530558デフォルトの名無しさん
2007/05/13(日) 19:08:29この一連のコードで具体的にどうやって?w
0559デフォルトの名無しさん
2007/05/13(日) 19:20:020560デフォルトの名無しさん
2007/05/13(日) 19:59:570561デフォルトの名無しさん
2007/05/13(日) 20:49:220562デフォルトの名無しさん
2007/05/14(月) 06:21:050563デフォルトの名無しさん
2007/05/14(月) 13:44:05>>555のも eval { require $class }; のほうが綺麗だと俺は思う。
0564デフォルトの名無しさん
2007/05/14(月) 15:48:00作りたいんだけど、headのfromってメルアドが入ってなかったりしてどこをみたらいいかわかりません。
送信元メルアドを参照するにはどこをみたらいいんでしょうか?
0565デフォルトの名無しさん
2007/05/14(月) 17:44:40rfc2822を読め
0566デフォルトの名無しさん
2007/05/15(火) 00:07:34それを実行したことある?
0567デフォルトの名無しさん
2007/05/15(火) 10:45:02それじゃ何の答えにもなってないだろ馬鹿
>>564
ヘッダに送信元が正しく入っているかは保証されてないから入ってないときは取りようがないよ
0568デフォルトの名無しさん
2007/05/15(火) 11:15:16これからは全ての質問に「仕様書読め」「解説書読め」で解決していくんですか?
0569デフォルトの名無しさん
2007/05/15(火) 11:26:10確かに不親切だけどね・・・
0570デフォルトの名無しさん
2007/05/15(火) 13:35:28なぜそうしたいの?
0571デフォルトの名無しさん
2007/05/15(火) 14:19:500572デフォルトの名無しさん
2007/05/15(火) 14:34:270573デフォルトの名無しさん
2007/05/15(火) 14:38:52メールの仕様に関してはスレ違い。
0574デフォルトの名無しさん
2007/05/15(火) 14:45:290575デフォルトの名無しさん
2007/05/15(火) 15:22:10なんで>>564に>>567が自分で回答すんだよw
まあみんなやさしめに行こうよ。
0576デフォルトの名無しさん
2007/05/15(火) 15:37:37だからRFCなんか読むのもヤダヤダ
0577デフォルトの名無しさん
2007/05/15(火) 15:51:240578デフォルトの名無しさん
2007/05/15(火) 15:55:460579デフォルトの名無しさん
2007/05/15(火) 16:17:560580デフォルトの名無しさん
2007/05/15(火) 16:19:500581デフォルトの名無しさん
2007/05/15(火) 16:52:34他人を装って自分を擁護するのって結構あるからな。
別に珍しくもないから、一応そう書いただけ。
0582デフォルトの名無しさん
2007/05/15(火) 17:18:060583デフォルトの名無しさん
2007/05/15(火) 17:28:100584デフォルトの名無しさん
2007/05/15(火) 21:53:540585デフォルトの名無しさん
2007/05/15(火) 22:52:22やっと起きたか、ひきこもり君
0586デフォルトの名無しさん
2007/05/15(火) 23:36:020587デフォルトの名無しさん
2007/05/16(水) 00:07:36RFCを読んだことが自慢になると思っている時点で(ry
>>586
ざっとでも一通り目を通しておかないと他の部分の実装ですぐに詰まってまたスレ違いの質問してくるでしょ。
スタンドアローンアプリなら好きなように実装汁だけど
そもそもネットワークアプリは相互に協調するものなんだから
「とりあえず動いている」「自分だけよければいい」という存在は迷惑だろ。
0588デフォルトの名無しさん
2007/05/16(水) 00:17:480589デフォルトの名無しさん
2007/05/16(水) 05:26:480590デフォルトの名無しさん
2007/05/16(水) 07:24:45探せば結構見つかるよねw
0591デフォルトの名無しさん
2007/05/16(水) 10:32:13遠回りすぎるし。
必要だとは思うが。
0592デフォルトの名無しさん
2007/05/16(水) 13:12:160593デフォルトの名無しさん
2007/05/16(水) 13:14:50違うだろ。携帯販売店にどっかの会社の電話番号を聞くようなもん。
んなもん、104で聞け、つまりスレ違いだ。
0594デフォルトの名無しさん
2007/05/16(水) 13:24:530595デフォルトの名無しさん
2007/05/16(水) 14:02:540596デフォルトの名無しさん
2007/05/16(水) 14:18:250597デフォルトの名無しさん
2007/05/16(水) 14:58:15別の通りすがりの人が食ってかかっているわけか。
「地図の見方を知ってるのを自慢したいだけ!!」と叫びながら。
0598デフォルトの名無しさん
2007/05/16(水) 15:44:27[初めてのPerl 3版]という本を読みながら勉強しているのですが、
3章の練習問題をしていて疑問に思いました。
@list = qw/ a b c d /;
print @list . "\n"; #こうすると、リストの個数が表示される。
print @list; #こうすると、リストの内容が表示される。
print @list , "\n"; #こうすると、リストの内容が表示される。
上記のように、3つの記述ほうほうで内容が変わってきます。
私が疑問に思ったのは、どうして"."で連結すると、リストの個数が
表示されるのでしょうか? また、","が急に出てきたのですが、どう
いった意味があるのでしょうか?
すみませんが、宜しくお願いします。
0599デフォルトの名無しさん
2007/05/16(水) 15:51:330600デフォルトの名無しさん
2007/05/16(水) 15:59:25スルーすればいいだけなんじゃねーの?
それをわざわざ嫌味ったらしく書き込むから多いから荒れるんだよ。
黙ってろよ。
0601デフォルトの名無しさん
2007/05/16(水) 16:15:12print @list . "\n";
まず、配列(ここでいう@listね)をprintすると配列の中身をすべて出力するのね。
それで↑は、@listと\nをつなげてひとつの文字列としてる。
配列はスカラ参照するとその要素数を返すから、「配列の要素数+改行」というひとつの文字列として出力される。
print @list;
これは上で言ったとおりそのまま配列の中身をぶちまける。
print @list , "\n";
printは出力対象をカンマで区切って複数指定できるのね。
だから、↑の場合は一つ目の例と違って@listと\nは別物として並列に並んでるのね。
print @list;
print "\n";
と同じというわけ。
だから配列の中身+改行となる。
0602デフォルトの名無しさん
2007/05/16(水) 16:18:22逆だろ。「RFCを読め」という回答があっという間に返ってきたのに、
それを気に入らなかった奴が騒いでいる。わざわざ嫌味ったらしくね。
黙っていればいいのにね。
0603598
2007/05/16(水) 16:32:22スカラーとして参照されたから、要素数を返したんですね。
詳しく説明していただけたおかげで、理解できたと思います。
ありがとうございました。
0604デフォルトの名無しさん
2007/05/16(水) 16:36:58部外者だが俺も勉強になった。ありがとう。
0605デフォルトの名無しさん
2007/05/16(水) 17:27:58まあみなさん、不足だと思ったら、攻撃しないで補うということで。
0606デフォルトの名無しさん
2007/05/16(水) 19:05:200607デフォルトの名無しさん
2007/05/16(水) 19:07:150608デフォルトの名無しさん
2007/05/16(水) 19:33:230609デフォルトの名無しさん
2007/05/16(水) 19:43:17ttp://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
え、みんなこれ全部読んだの??
0610デフォルトの名無しさん
2007/05/16(水) 19:48:27これ、豆知識な
0611デフォルトの名無しさん
2007/05/16(水) 19:57:540612デフォルトの名無しさん
2007/05/16(水) 20:17:470613デフォルトの名無しさん
2007/05/16(水) 21:26:11業務で使うときでも読まないのかだぜ?
0614デフォルトの名無しさん
2007/05/16(水) 21:34:58http://www.puni.net/~mimori/rfc/rfc2822.txt
次の人:
上の文章からFromの仕様が書いてある文章を見つけ、行番号等の場所を報告
さらに次の人:
的確に抜粋して、ここに書く
以上で当スレのミッションは終了となる。
0615デフォルトの名無しさん
2007/05/16(水) 21:51:390616デフォルトの名無しさん
2007/05/17(木) 00:28:170617デフォルトの名無しさん
2007/05/17(木) 02:12:420618デフォルトの名無しさん
2007/05/17(木) 04:34:550619デフォルトの名無しさん
2007/05/17(木) 07:08:02RFC 読もうが読ままいが、perl についての質問に該当しなかった訳だし
RTFM ってのは最低限わきまえとく事だし
(ようするに俺も RFC 嫁よって思ってる訳だけど)
0620デフォルトの名無しさん
2007/05/17(木) 10:16:00| i┬┬┬┬┬┬┬┬┬┬┬┬┬i |
| |┼ ,r-l^i ‐┼y'⌒~}ー┼y'⌒~}ー┼| |
| |┼と::_;;;:_}┼じ;_;:;ナ┼ヽ;:;:: :;;:;:;)┼| |
| |┼┼┼┼┼┼┼┼┼┼┼┼┼| |
| |┼f_:::_:;;;り┼{:;;;::_;;う┼( ;;:;:;:"")┼| |
| |┼く:;;;_:;;Jー|ーじ;_;:;ナ┼f_::_::;;;;り┼| |
| |┼┼┼┼┼┼┼┼┼┼┼┼┼| |
|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ .|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
とりあえず焼肉でも食って落ち着こうぜ
0621デフォルトの名無しさん
2007/05/17(木) 10:40:54小説を読むわけじゃないんだから、必要なときに必要な箇所を読むんだよ。
0622デフォルトの名無しさん
2007/05/17(木) 19:06:200623デフォルトの名無しさん
2007/05/17(木) 20:59:23大文字で始めるのか、どちらがいいのでしょうか。
perl5.8.8のライブラリを見るとどちらもあるのですが、Perlの流儀だとどのような命名規則がいいのでしょうか。
0624デフォルトの名無しさん
2007/05/17(木) 21:24:06foo みたいに小文字で始まってるのは pragma 扱いだと思う。
0625デフォルトの名無しさん
2007/05/17(木) 21:28:28perldoc perlmodlib より
>Package/Module names are an exception to this rule. Perl informally
>reserves lowercase module names for 'pragma' modules like integer
>and strict. Other modules normally begin with a capital letter and
>use mixed case with no underscores (need to be short and portable).
0626デフォルトの名無しさん
2007/05/17(木) 23:08:09どうもありがとうございます。
0627デフォルトの名無しさん
2007/05/18(金) 01:56:340628デフォルトの名無しさん
2007/05/18(金) 02:52:38よく見かけるのは"strict", "warnings","lib", "overload", "vars", "constant", "blib"あたりかな。
あとは、マルチバイト圏の人が"utf8", "encoding", "open"を使ってたりすることあるな。
P.S
分からないことは恥ではない、分からないことを放置することが恥なのだ
0629デフォルトの名無しさん
2007/05/18(金) 03:08:160630デフォルトの名無しさん
2007/05/18(金) 03:14:05baseはOOで継承するときに使うやつな。
よく使うのに、度忘れしてたw
0631デフォルトの名無しさん
2007/05/18(金) 20:35:21(1 2 3 4 5 6) -> (4 8 12)
みたいな処理を簡潔にperlで表現したいなら、どのように書くんでしょうか?
0632デフォルトの名無しさん
2007/05/18(金) 20:42:420633デフォルトの名無しさん
2007/05/18(金) 21:20:39皆さん、どうされてます?
外部補助ツール等を使用しない方法で、perlのみで行いたいんです。
ググッてもうまくヒットしないので…恐縮ですが教えてください。
0634デフォルトの名無しさん
2007/05/18(金) 21:22:10すいません。WindowsXPでactiveperlの環境です。
0635デフォルトの名無しさん
2007/05/18(金) 21:31:030636デフォルトの名無しさん
2007/05/18(金) 21:39:21OS側の設定だったんですね。助かりました。
0637デフォルトの名無しさん
2007/05/19(土) 16:16:37mapもgrepもおなじものだが、意味的に条件で抽出のときはgrepを使いたくなるな。
式が偽になったものは返値には残らないので
map { $_ % 2 == 0 && $_ * 2 } ( 1,2,3,4,5,6);
でもOK
0638デフォルトの名無しさん
2007/05/19(土) 16:46:07map { $_ % 2 ? () : $_ * 2 } (1,2,3,4,5,6);
としないと。
0639デフォルトの名無しさん
2007/05/19(土) 16:47:210640デフォルトの名無しさん
2007/05/20(日) 00:28:190641デフォルトの名無しさん
2007/05/20(日) 01:38:54配列に 0 が入ってたらどうするんだろ
想定外でどうでもいいのかな?
これだと(当たり前だけど)要素の値が 0 の時には戻り値無し。
0642631
2007/05/20(日) 12:31:03Lispを勉強して、次はPerlにスイッチしたいと思っていて、なるべくLispスタイルで
プログラミングできるようにしたいと思っているんですが、二つ以上のリストを元にして
結果を返すような
(1 2 3 4 5) (6 7 8 9 10) -> ((1 6) (2 7) (3 8) (4 9) (5 10))
といった処理はどうするのでしょうか?mapの使いかたを見ると使えるのは$_だけみたいなのですが。
0643デフォルトの名無しさん
2007/05/20(日) 12:40:10map {
$a = $_;
$b = shift @b;
処理
} @a
0644デフォルトの名無しさん
2007/05/20(日) 12:43:41とりあえずリファレンス使わないと、リストのリストとかはできんと思うが。
0645デフォルトの名無しさん
2007/05/20(日) 14:06:29print @$_ for foo([1 .. 5], [6 .. 10]);
sub foo { map [map shift @$_, @_], (1 .. (sort map scalar @$_, @_)[-1]) }
こんな感じか。
0646デフォルトの名無しさん
2007/05/20(日) 14:09:46間違えた。
0647デフォルトの名無しさん
2007/05/20(日) 15:07:14っ[List::MoreUtils]
0648デフォルトの名無しさん
2007/05/20(日) 15:27:33(空白も含みます。)
$text = 'aあ かf漢字';
例えば、上の$textを分解して、
@array = ('a', 'あ', ' ', 'か', 'f', '漢', '字');
のような配列を作りたいのです。
splitを使って
@array = split(/[\w\s]/, $text);
としたのですが、何も格納されずうまく出来ませんでした。
どのようにすれば出来るでしょうか?
0649デフォルトの名無しさん
2007/05/20(日) 15:35:50$text = 'aあ かf漢字';
@array = split(//, $text);
0650648
2007/05/20(日) 15:47:43何も指定しないと一文字単位で分解されるんですね。splitは。
その後、
while($text){
push(@array, substr($text,0,1,''));
}
といったコードを思いついたのですが、
649さんのコードの方がすっきりしてるのでそちらを使わせていただきます。
ありがとうございました。
0651デフォルトの名無しさん
2007/05/20(日) 16:32:30俺は初心者で、この前俺もそういうコード考えて使ってみてわかったんだが、
substrは1バイト単位で長さ見てるけど日本語は2バイトコード使ってたりしてて、
結局その>>650みたいなコードでひらがなやカタカナや漢字取り出すときにsubstr($text,0,1,'')ってところで2バイト中の1バイトしか取り出せなくて中途半端になるんだよな。
2バイト文字限定なら取り出す長さを2バイトにすれば問題無いし、アルファベットや数字は1バイトで問題無いけど。
>>649のコードなら、俺は大丈夫なのかどうかは知らないけど、なんとなく大丈夫っぽい感じする。
0652デフォルトの名無しさん
2007/05/20(日) 16:39:13substrのOFFSETやLENGTHの単位は文字数だから、>>650でも
use encodingで文字コードを適切に指定すれば何の問題もないよ。
0653デフォルトの名無しさん
2007/05/20(日) 16:59:52参考書見て、substrの説明に「文字数ではなくバイト数で取っていることがわかります。日本語の入った文字では使わないようにしましょう」
ってあったから、substrでは永遠に2バイト文字と1バイト数字アルファベットは同時に処理できないものと思ってました。
use encodingで指定すればsubstrでも2バイト文字部分は長さ1となるんですね。
use encodingでコード指定するのが大切ってことを理解しますた。
0654デフォルトの名無しさん
2007/05/20(日) 17:20:46厚みで値段稼いでるような本なら、そのあたりいい加減でも不思議じゃないな。
0655デフォルトの名無しさん
2007/05/20(日) 17:45:13なるほど、確かに初版第1刷が2003年ってなってる。
初心者質問ですが
my@b=("$a[1]","$a[2]","$a[3]","$a[4]","$a[5]","$a[6]","$a[7]","$a[8]");
↑
こういう書き方をもっと短く書けませんか?
既に@aには$a[0]や$a[9]から先にも変数が入ってる状態で、$a[1]〜$a[8]までを@bに入れたいです。
$a[1〜8]みたいな表現が存在するなら表現方法を教えてほしいです。
0656デフォルトの名無しさん
2007/05/20(日) 17:57:06@a[1..8] で OK。
キーワードはスライス。
ところで、なんで "" で囲ってるの?
0657デフォルトの名無しさん
2007/05/20(日) 17:58:21my @b = map "$_", @a[1..8];
0658デフォルトの名無しさん
2007/05/20(日) 18:14:52激しくトンクス!
そういえばfor(0..7)とか使ってました。
@a[1..8]という書き方があったとは。
0659デフォルトの名無しさん
2007/05/20(日) 18:23:29^これや^これの名前ってなんだっけ?
0660デフォルトの名無しさん
2007/05/20(日) 18:39:44なんか$でプレフィクスとか見つけたけど。
@は配列ArrayのAを表し
$は・・・なんだっけ?Sからはじまるなんかの単語じゃなかったっけ?
%は/の左の丸がキーで、/の右の丸が値を示すんだっけ?
なんかそんな感じ。
どうせ声出して読まないし気にするまでも無いような・・・
0661デフォルトの名無しさん
2007/05/20(日) 18:45:220662デフォルトの名無しさん
2007/05/20(日) 18:57:190663デフォルトの名無しさん
2007/05/20(日) 18:59:10sigil だと思う。
sigilsと複数形にすることも多いが
0664デフォルトの名無しさん
2007/05/20(日) 19:10:35どういったものなんでしょう。
役に立ちそうなサイトがあったら教えてください。
0665デフォルトの名無しさん
2007/05/20(日) 19:44:38あーそれそれ。さんくす
0666デフォルトの名無しさん
2007/05/20(日) 20:34:14友達が言ってたんですが他の言語だと20行くらいかかりそうな処理も1行で記述できるくらい魔法ちっくなことができるって聞いたんですが本当ですか?
0667デフォルトの名無しさん
2007/05/20(日) 20:51:05すべてが魔法なので紹介しきれません
0668デフォルトの名無しさん
2007/05/20(日) 21:07:490669デフォルトの名無しさん
2007/05/20(日) 21:14:040670デフォルトの名無しさん
2007/05/20(日) 21:31:150671デフォルトの名無しさん
2007/05/20(日) 21:36:440672デフォルトの名無しさん
2007/05/20(日) 21:46:12もっとやさしく!!
>>669
a + b; b + c; c + d; ... はい1行wwwwwとかは禁止なんです
>>670
もっとやらしく!!
0673デフォルトの名無しさん
2007/05/20(日) 22:03:30では、とっておきの電卓プログラムを紹介しようか。
C++で書くと、何十ステップも必要だろう。
while(<>){print eval($_)}
0674デフォルトの名無しさん
2007/05/20(日) 22:23:07カレントディレクトリ以下のファイルがすべて消えました!><
0675デフォルトの名無しさん
2007/05/20(日) 22:43:53きもい
0676デフォルトの名無しさん
2007/05/20(日) 22:50:560677デフォルトの名無しさん
2007/05/20(日) 22:55:32>>673をしたらキーボードからどんな文も実行できてしまうよな?
>>674を書いて実行してキーボード触らずにマウスで閉じたら何も起きないよな?
恐怖体験アンビリーバブー
0678デフォルトの名無しさん
2007/05/20(日) 22:56:200679デフォルトの名無しさん
2007/05/20(日) 23:18:110680デフォルトの名無しさん
2007/05/20(日) 23:30:26サブルーチンは、多少汚くても短くまとめたいし。
なんか良いサイト無い?
0681デフォルトの名無しさん
2007/05/20(日) 23:31:390682クロニクル ◆ob60wHXQlc
2007/05/20(日) 23:32:46Build 820 setup
の
CustomsetUP のところでInnstlationErroが出るんです。
初心者なのでわからないことがたくさんあります。
以前XPで何度かインストールしたのですが、VISTAになったとたんできなくて
苦労しております。どうかご教授お願いいたします。
0683デフォルトの名無しさん
2007/05/20(日) 23:34:48一子相伝も特殊技術だから。
0684デフォルトの名無しさん
2007/05/20(日) 23:45:25正規表現使ったほうが早いとかある?
0685デフォルトの名無しさん
2007/05/20(日) 23:48:100686デフォルトの名無しさん
2007/05/20(日) 23:51:35このスレの前の方だけでもいくつかあると思うよ。
過去ログ辿ればもっとあるし。
0687デフォルトの名無しさん
2007/05/21(月) 00:12:00(結城さんではなく回答者が時々アクロバティック)
0688デフォルトの名無しさん
2007/05/21(月) 15:57:0406898
2007/05/21(月) 16:50:18記述?だからと思いPERLの詳しくなればわかると思いこの板にきました。
PERLに強くなるにはなにを学べばいいですか?ラクダ本というのがいいとどっかで
見たのですが間違いないですか?
そもそもCGIを自由に使えるようになるのはPERLを詳しくなっても意味ないですか?
CGIを自由に扱えるようになりたいので勉強の仕方わかる方お願いします。
0690デフォルトの名無しさん
2007/05/21(月) 16:54:260691デフォルトの名無しさん
2007/05/21(月) 16:57:15> CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
> CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
> (WEBプログラミング板 http://pc8.2ch.net/php/ )
0692デフォルトの名無しさん
2007/05/21(月) 18:50:54向こうでも相手にされていない件についてw
0693デフォルトの名無しさん
2007/05/21(月) 19:01:22かわいそうだからマヂレスしてあげるよ
勉強しなほうが身のため
06948
2007/05/21(月) 19:01:300695デフォルトの名無しさん
2007/05/21(月) 19:01:4806968
2007/05/21(月) 19:02:41なぜ!?
0697デフォルトの名無しさん
2007/05/21(月) 19:03:4506988
2007/05/21(月) 19:07:37悲しいこと言うなぁ・・
0699デフォルトの名無しさん
2007/05/21(月) 19:08:320700デフォルトの名無しさん
2007/05/21(月) 19:11:060701デフォルトの名無しさん
2007/05/21(月) 19:37:260702デフォルトの名無しさん
2007/05/21(月) 19:39:59CGI を覚えるより何より、ここの使い方をまず真鍋
0703デフォルトの名無しさん
2007/05/21(月) 19:50:230704デフォルトの名無しさん
2007/05/21(月) 21:19:43マジレスするのもどうかと思うが、
CGIを勉強したいならラクダ本よりネズミ本がオヌヌメ。
Perlをきちんと習得したいなら、ラクダ本よりリャマ本をまず嫁。
リャマ→ラクダ→ネズミの順で読むといい。
後はWebProg板逝け。
0705デフォルトの名無しさん
2007/05/21(月) 21:23:4507068
2007/05/21(月) 21:24:520707デフォルトの名無しさん
2007/05/21(月) 21:38:57タダで読めるPerl本
ttp://www.perl.org/books/library.html
ネズミ(初版)
ttp://www.oreilly.com/openbook/cgi/
ただリャマだけは小遣い溜めてでも買うべきだと思うんです
0708デフォルトの名無しさん
2007/05/21(月) 23:06:21ラクダも読み物として面白いけど、Cookbookのほうが実践的なテクニックを身に付けられるんでないかな。
0709デフォルトの名無しさん
2007/05/21(月) 23:57:50なんつーか、その、K○NTクローンが増えても困るっつーか
0710デフォルトの名無しさん
2007/05/22(火) 00:20:380711デフォルトの名無しさん
2007/05/22(火) 00:38:13○ャ○から入って、○○○と○○○○○○○○を併用さ。
ラクダ?○○○○○○c で十分
…中途半端じゃない伏せ字も頭悪い。
0712デフォルトの名無しさん
2007/05/22(火) 00:52:260713デフォルトの名無しさん
2007/05/22(火) 00:56:24> ○ャ○から入って、○○○と○○○○○○○○を併用さ。
ジャバ、コボル、N88BASIC?
> ラクダ?○○○○○○c で十分
わがんね。
本題のほうは「なんでバレバレの伏せ字を使う人がいるのか」が昔から不思議。
0714デフォルトの名無しさん
2007/05/22(火) 01:04:420715デフォルトの名無しさん
2007/05/22(火) 01:08:17あえて理由付けするなら、検索に引っかからないため。
まぁ、やってる方の心理としては○○だと思うがw
0716713
2007/05/22(火) 01:20:11ボケが思いつかなくて「わがんね」でした。手間をかけさせてごめんなさい。
>>715
うーん、検索ですか。なるほど。
でも、△△△にする○○の大半は××なだけなんでしょうね。
0717デフォルトの名無しさん
2007/05/22(火) 01:51:290718デフォルトの名無しさん
2007/05/22(火) 02:37:09useを使用し、下位ディレクトリにあるモジュールを読み込むには
use ディレクトリ名::モジュール名;
なのはどの初級者本にも書いてあるのですが、
上位ディレクトリにあるモジュールの読み込み方が分かりません。
パスはどう書けばよろしいのでしょうか?
0719デフォルトの名無しさん
2007/05/22(火) 03:48:180720デフォルトの名無しさん
2007/05/22(火) 07:22:32十代後半の女オタクの馴れ合いみたいで気持ち悪いよね。
0721デフォルトの名無しさん
2007/05/22(火) 08:20:440722デフォルトの名無しさん
2007/05/22(火) 13:39:110723デフォルトの名無しさん
2007/05/22(火) 15:24:140724デフォルトの名無しさん
2007/05/22(火) 15:43:310725デフォルトの名無しさん
2007/05/22(火) 15:58:390726デフォルトの名無しさん
2007/05/22(火) 16:30:10ありがとうございました。できました。
0727デフォルトの名無しさん
2007/05/22(火) 18:07:33爆笑
0728デフォルトの名無しさん
2007/05/22(火) 18:08:03同じプログラム内で再度、標準入力から取得することは可能ですか?
既存のプログラムに、入力チェックを追加したいのですが、2回目はデータが空になります(当たり前?
一応、seekしてみたのですが、うまく戻りそうにありません
バカな質問している気がしていますが、「そんなことできるワケねぇだろ、バカ」でも良いのでアドバイス下さい
0729デフォルトの名無しさん
2007/05/22(火) 18:11:190730デフォルトの名無しさん
2007/05/22(火) 18:23:30>>1嫁
0731デフォルトの名無しさん
2007/05/22(火) 18:25:33過去に戻れるなんて素敵だぜ
0732デフォルトの名無しさん
2007/05/22(火) 18:26:16すみませんでした
そちらで質問してみます
0733デフォルトの名無しさん
2007/05/22(火) 18:41:44このコメントだけで十分な説明になってるな
0734デフォルトの名無しさん
2007/05/22(火) 19:03:040735デフォルトの名無しさん
2007/05/22(火) 20:34:550736デフォルトの名無しさん
2007/05/22(火) 20:36:070737デフォルトの名無しさん
2007/05/22(火) 20:45:580738デフォルトの名無しさん
2007/05/22(火) 21:49:02起動が多少遅くなるので
別な方法がないか教えてもらえませんか
使用用途としては
下記のようなものです
単にifで分けると モジュール部もすべて読み込むようなので
両方ともないとエラーになりました
evalで囲めばそれっぽくうごきますが
しっくりきません。
#ifdef HOGEHOGE
use HOGEHOGE;
〜〜〜
#else
use HOGEHOGE2;
〜〜〜
#endif
0739デフォルトの名無しさん
2007/05/22(火) 22:51:27UNIVERSAL::require 使えば解決するようなコトじゃないかな?
0740デフォルトの名無しさん
2007/05/22(火) 22:52:13use $ENV{'HOGEHOGE'};
とかして環境変数HOGEHOGEから渡せないかなと思ったがダメだった。
0741738
2007/05/22(火) 22:58:53趣旨的には 740のとおり useだけじゃなくて
汎用的に使える方法がないかと(まぁ -Pで出来るんですがあんまり標準的じゃないような気がして)
目的としては、環境がある程度違っても
ソースを複数管理するのは面倒なので同一ソースで動かしたいです
下記のようなのも出来ると非常に助かります
#ifdef hogehoge
while(1) {
#endif
〜〜〜〜〜
#ifdef hogehoge
}
#endif
0742デフォルトの名無しさん
2007/05/22(火) 23:39:450743デフォルトの名無しさん
2007/05/22(火) 23:41:58かと思ったけどなんか違うよね
0744デフォルトの名無しさん
2007/05/23(水) 00:20:43-P 使うからには、pure perl じゃなく C 関係?
それとも pure perl でホスト毎に挙動を変更したいの?
前者だったら、 Inline::C と後述を噛み合わせて…
後者だったら、ベタだけど Sys::Hostname で hostname ゲットして
BEGIN{if ( $hostname ...){}else{} } あたり?
後者なら、もっとべたべたにソース全般で挙動を分けられるし、
実際やってるけど、前者だったらやろうと云う気にもならぬ。
って素人の口出しすまぬ。
0745デフォルトの名無しさん
2007/05/23(水) 00:29:530746デフォルトの名無しさん
2007/05/23(水) 00:52:02ソコでSys::Hostnameは使っているけど、もっと良い手があれば知りたいものだ
0747デフォルトの名無しさん
2007/05/23(水) 01:16:42その環境変数によってunix系の時と動作変えてる。
0748738
2007/05/23(水) 08:38:37当面の目標としては
PurePerlでmod_perl2(ModPerl::RegistryPrefork)とFastCGIで
同一ソースを使えるようにしたいと思ってます
FastCGI対応にするためには
読み込みモジュールの差し替え(CGI->CGI::Fast)とループ処理が増えるので
738,741のようなことができないかなと思った次第です、
良い方法がないかなと
0749デフォルトの名無しさん
2007/05/23(水) 09:35:25Catalystあたりを参考にしれ
0750デフォルトの名無しさん
2007/05/23(水) 09:49:31Rubyだとわりと簡単にFastCGI対応できるみたい。
Perlでも同じようにできないかな?
既存のCGIを変更無しでFastCGIに
ttp://sugi.nemui.org/wiki/%B4%FB%C2%B8%A4%CECGI%A4%F2%CA%D1%B9%B9%CC%B5%A4%B7%A4%C7FastCGI%A4%CB
0751デフォルトの名無しさん
2007/05/23(水) 09:55:29Catalyst::Engine::FastCGI
http://search.cpan.org/~mramberg/Catalyst-Runtime-5.7007/lib/Catalyst/Engine/FastCGI.pm
CGI::Application::FastCGI
http://search.cpan.org/~naoya/CGI-Application-FastCGI-0.02/lib/CGI/Application/FastCGI.pm
0752デフォルトの名無しさん
2007/05/23(水) 12:07:100753デフォルトの名無しさん
2007/05/23(水) 14:12:31あるファイル(数万行の数字データ)の上から1行ずつ順番に読み込んで
最終行になるとまた1行目に戻って・・・という作業をしたいのです
途中でプログラムを閉じて再開したときも次の行から開始が可能であれば
もう言うことナシですが,残念ながら自分では何とも出来ず
丸2日間ネット上で調べに調べ
srand();
open(FILE, "data.txt");
rand($.) < 1 and $line = $_ while <FILE>;
close(FILE);
$line =~ s/\n//g;
とランダムで1行読み込む仕様で妥協するのが限界でした
もし上記作業がperlで可能でしたら申し訳ないですが
教えていただけないでしょうか
可能な方いらっしゃいましたら どうかお願いします。
0754デフォルトの名無しさん
2007/05/23(水) 14:13:460755753
2007/05/23(水) 14:27:55イカのような感じで半永久的に作業が続くわけでして・・・^^;
print <<"_HTML_";
Content-type: text/html
<html><head>
<meta http-equiv="refresh" content="5; url=aaa.cgi">
0756デフォルトの名無しさん
2007/05/23(水) 14:34:480757デフォルトの名無しさん
2007/05/23(水) 14:38:03とりあえずCGIは置いといて、まずファイルの入力の基本をググって調べればいいんじゃね
0758デフォルトの名無しさん
2007/05/23(水) 14:38:300759デフォルトの名無しさん
2007/05/23(水) 14:47:34イカ=print <<・・、がどこから出て来たかわからん、ってことだよ
0760デフォルトの名無しさん
2007/05/23(水) 14:52:370761デフォルトの名無しさん
2007/05/23(水) 14:54:09以下のように、が、"<meta http-equiv="refresh" content="5; url=aaa.cgi">" を指してるんじゃないの?
大体、何を言わんとしてるかはわかる
0762753
2007/05/23(水) 14:56:30すみません・・・
えーっと
5秒おきにaaa.cgiにアクセスしてIEの画面に数字を順番に
表示させたいだけなんです
753で書いた方法で $line の数値を表示させるだけと言えば
伝わりますかね・・・
0763デフォルトの名無しさん
2007/05/23(水) 15:02:20CookieやURIのクエリ部分だとか、サーバ上のファイルとかメモリとか。
0764デフォルトの名無しさん
2007/05/23(水) 15:02:570765753
2007/05/23(水) 15:05:13どっちか悩んだあげくこっちに書いてしまいました
お邪魔しました
0766764
2007/05/23(水) 15:06:45対象マシンのメモリ可哀想だな。 しかも、IEがそのデータを表示仕切る前に
IE落ちるだろうし、表示仕切る前に5秒経って更新かかるだろうな。
しかも、更新しようにもかなりの負荷がかかってるからモッサリ。
ブラウザクラッシャーでも作ろうとしてるのか?
0767753
2007/05/23(水) 15:10:091行目表示して5秒後には2行目・・・みたいな感じで。
順番に表示されるのを見て 手元のデータと比較していくだけの
単調な作業なんです
0768デフォルトの名無しさん
2007/05/23(水) 15:26:280769デフォルトの名無しさん
2007/05/23(水) 15:56:500770デフォルトの名無しさん
2007/05/23(水) 16:12:49数万行のデータを手元に持ってきてjavascriptで順次表示させた方が増しな気がする。
何行目を表示させているかも、少し離して表示させておけば、中断したときには手書きでメモれば十分だろう。
表示開始行数は引数で与えれば再開できるし。
0771デフォルトの名無しさん
2007/05/23(水) 17:25:550772デフォルトの名無しさん
2007/05/23(水) 17:34:38BEFOREHAND: close door, each window & exit; wait until time.
open spellbook, study, read (scan, select, tell us);
write it, print the hex while each watches,
reverse its length, write again;
kill spiders, pop them, chop, split, kill them.
unlink arms, shift, wait & listen (listening, wait),
sort the flock (then, warn the "goats" & kill the "sheep");
kill them, dump qualms, shift moralities,
values aside, each one;
die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill the next sacrifice, each sacrifice,
wait, redo ritual until "all the spirits are pleased";
do it ("as they say").
do it(*everyone***must***participate***in***forbidden**s*e*x*).
return last victim; package body;
exit crypt (time, times & "half a time") & close it,
select (quickly) & warn your next victim;
AFTERWORDS: tell nobody.
wait, wait until time;
wait until next year, next decade;
sleep, sleep, die yourself,
die at last
# Larry Wall
これどういう意味?暇だったら訳してくれ
0773デフォルトの名無しさん
2007/05/23(水) 17:35:38Excelでも十分かもしれん。
0774デフォルトの名無しさん
2007/05/23(水) 17:42:02で、sleep(5)とか
0775デフォルトの名無しさん
2007/05/23(水) 18:14:28excel だけど win は一万行平気で開く?
cat -n hoge.log | more で十分だったりw
0776デフォルトの名無しさん
2007/05/23(水) 18:26:06ラクダ本3版Volume2に訳が出てるお
0777デフォルトの名無しさん
2007/05/23(水) 18:39:22本当はそんな感じ(と、行番号カウンタか)でいいんだと思うよ。
Web鯖に吐かせるべき理由があるんだかどーなんだか。
0778デフォルトの名無しさん
2007/05/23(水) 18:45:09for >= grep > mapって感じみたいなのですがなんでmapだけこんなに遅いのでしょう?
■テストコード
use Benchmark qw/cmpthese/;
use strict;
use warnings;
my $LOOP = 100;
my @SEED = ('a'..'z','A'..'Z',0..9);
my @DATA = map {$SEED[int rand @SEED]} 1..10000;
my %TABLE = map {$_=>$SEED[int rand @SEED]} @SEED;
cmpthese($LOOP, {
#非破壊
'map1' => sub {my @hoge = map { $TABLE{$_} } @DATA; 1;},
'grep1' => sub {my @hoge;grep push(@hoge,$TABLE{$_}),@DATA;1;},
'for1' => sub {my @hoge;push(@hoge,$TABLE{$_}) for(@DATA);1;},
#破壊
'map2' => sub {map {$_=$TABLE{$_}} @DATA ;1;},
'grep2' => sub {grep $_=$TABLE{$_},@DATA;1;},
'for2' => sub {$_ = $TABLE{$_} for(@DATA);1;},
});
0779デフォルトの名無しさん
2007/05/23(水) 18:47:30Rate map1 map2 for1 grep1 grep2 for2
map1 25.8/s -- -14% -32% -33% -66% -69%
map2 30.1/s 17% -- -21% -22% -60% -64%
for1 38.0/s 48% 26% -- -2% -50% -54%
grep1 38.6/s 50% 28% 2% -- -49% -53%
grep2 75.8/s 194% 152% 99% 96% -- -8%
for2 82.6/s 221% 174% 117% 114% 9% --
■結果 2回目
Rate map1 map2 grep1 for1 grep2 for2
map1 24.6/s -- -16% -33% -33% -71% -71%
map2 29.2/s 19% -- -20% -21% -65% -66%
grep1 36.6/s 49% 26% -- -1% -56% -57%
for1 36.9/s 50% 27% 1% -- -56% -57%
grep2 83.3/s 239% 186% 127% 126% -- -3%
for2 85.5/s 248% 193% 133% 132% 3% --
■結果 3回目
Rate map1 map2 grep1 for1 grep2 for2
map1 23.3/s -- -17% -33% -37% -72% -73%
map2 27.9/s 20% -- -20% -25% -66% -67%
grep1 35.0/s 50% 25% -- -6% -57% -59%
for1 37.0/s 59% 33% 6% -- -55% -56%
grep2 82.0/s 252% 193% 134% 121% -- -3%
for2 84.7/s 264% 203% 142% 129% 3% --
0780デフォルトの名無しさん
2007/05/23(水) 19:28:11一つだけ全く別のことやってりゃそりゃ遅い罠。
map2が遅いのはfor2grep2と違ってブロック評価してるからだと思う。
とりあえず
'map1' => sub { my @hoge; map { push @hoge, $TABLE{$_} } @DATA; 1; },
'map2' => sub { map $_ = $TABLE{$_} , @DATA; 1; },
に書き換えたらグループごとの速度は大差なくなるはず。
関係ないけど最近のPerlのmapは
同じことやるforeachより速くなったりするのでびっくり。
古いバージョンなら戻り値使わない時は絶対forって言えたんだけどな。
0781デフォルトの名無しさん
2007/05/23(水) 19:30:42Rate grep1 for1 map1 grep2 map2 for2
grep1 19.8/s -- -1% -3% -64% -64% -65%
for1 20.0/s 1% -- -2% -64% -64% -65%
map1 20.4/s 3% 2% -- -63% -63% -64%
grep2 55.2/s 179% 176% 171% -- -1% -3%
map2 55.5/s 180% 177% 172% 1% -- -3%
for2 57.0/s 188% 185% 180% 3% 3% --
0782デフォルトの名無しさん
2007/05/23(水) 20:02:21map2はsub {map {$_=$TABLE{$_};1;} @DATA ;1;}
とすると順位があがりました。余計なメモリコピーが発生してたみたいです。
さらに>>780さんの指摘を受けて
'map1' => sub {my @hoge;map push(@hoge,$TABLE{$_}),@DATA; 1;},
'map2' => sub {map $_=$TABLE{$_},@DATA ;1;},
に変更したところ若干forが優勢っぽいですがほとんど同じ結果になるようになりました。
組み込みの関数なのでperlのバージョンによって変わってくる部分もありそうですね。
テスト環境はperl v5.8.5でした。(書き忘れ)
大変わかりやすい説明ありがとうございました。
0783デフォルトの名無しさん
2007/05/23(水) 20:05:520785デフォルトの名無しさん
2007/05/25(金) 01:12:04Perlでは初めてオブジェクト指向のコードを書いているのですが、
下記のようなコードでアロー演算子と行入力演算子が併用できなくて困っています。
一度他のローカル変数にファイルハンドルを代入してやればうまくいくのですが、
もっとスマートに、オブジェクトが持つファイルハンドルから行入力する方法はあるのでしょうか。
use strict;
sub parse
{
my $this = shift;
my @data = <$this->{fh_lex}>; # 文法エラー
# 下のコードなら成功
# my $fh = $this->{fh_lex};
# my @data = <$fh>;
for (@data) {
;# 省略
}
}
0786デフォルトの名無しさん
2007/05/25(金) 01:59:16括弧の中を $fh のような形をしたスカラ変数にしないとダメだから、
一時的に変数を作るしかないね。
my @data = sub{$_=shift;<$_>}->($this->{fh_lex}); とかw
0787デフォルトの名無しさん
2007/05/25(金) 02:08:240788デフォルトの名無しさん
2007/05/25(金) 02:09:520789デフォルトの名無しさん
2007/05/25(金) 02:22:28とかダメ? 試してないけど。
0790デフォルトの名無しさん
2007/05/25(金) 02:31:13ダメだよ。やってみたw
<>を放棄した技だけどw
my @data = readline $$this{fh_lex} ;
0791デフォルトの名無しさん
2007/05/25(金) 02:37:14my @data = readline $this->{fh_lex};
でよかろ。
0792デフォルトの名無しさん
2007/05/25(金) 04:08:38別に無理に1行に書かなくても地味に$fhに代入した方がよっぽど明示的で
よいコードに見える。
どうしてもっていうんなら、$thisがオブジェクトならオーバーロードを使ってみては?
0793デフォルトの名無しさん
2007/05/25(金) 18:39:22>>780
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perl581delta.pod#Miscellaneous_Enhancements
> map in void context is no longer expensive. map is now context aware,
> and will not construct a list if called in void context.
perlstyle でやるなって言われてるのに、悪い癖を直そうとしない子が
あまりに多いから実装側でフォローした、と俺は解釈してる。
0794デフォルトの名無しさん
2007/05/25(金) 18:48:260795デフォルトの名無しさん
2007/05/25(金) 19:11:110796785
2007/05/25(金) 22:27:59みなさんどうもありがとうございます。
やはりPerlとはいえ表記上の制約はあるんですね。
にも関わらず他の方法がいくつもあると言うのはさすがですが。
どれを使おうか迷ったのですが、とりあえず今回は、readlineを使うのが一番綺麗に見えたので、それを使わせてもらおうと思います。
本当に勉強になりました。
0797デフォルトの名無しさん
2007/05/26(土) 02:42:48以下の[data.csv]ようなカンマ区切りのデータがあるとします。
横軸がX座標、縦がY座、各格子の数値がZ座標(標高)を示しています。
このデータを、[out.csv]のように変換したいのですが、2次元配列でつまずいてしまい、途方に暮れてしまいました。
どなたかお知恵を授けて下さい。よろしくお願いします。
あと、入力データのうち行頭が"#"で始まる行は無視する、というのはどうすればできるのでしょうか。合わせてご教授いただけると助かります。よろしくお願いします。
[data.csv]
, 1, 2, 3, 4
5, 12.63 , 33.82 , 31.71 , 29.73
4, 34.75 , 32.14 , 29.31 , 26.70
3, 33.55 , 30.27 , 27.17 , 23.43
2, 31.02 , 29.42 , 26.65 , 23.61
1, 28.00 , 27.04 , 25.39 , 22.60
[out.csv]
X,Y,Z
1,1,28.00
1,2,27.04
1,3,25.39
1,4,22.60
2,1,31.02
2,1,27.04
(中略)
5,3,31.71
5,4,29.73
0798デフォルトの名無しさん
2007/05/26(土) 03:41:35宿題乙^^
0799デフォルトの名無しさん
2007/05/26(土) 04:09:08さてコレをどれくらい短くできるだろうか
use strict;
open FILE, "data.csv";
my @data;
my @index;
my @ys;
for my $line (<FILE>) {
chomp $line;
unless (@index) {
@index = split(/\s*,\s*/, $line);
shift @index;
next;
}
my($y, @d) = split(/\s*,\s*/, $line);
push(@ys, $y);
for (my $i=0; $i < @d; $i++) {
$data[ $index[$i] ][ $y ] = $d[$i];
}
}
close FILE;
open FILE, ">out.csv";
for my $x (@index) {
for my $y (@ys) {
print FILE "$x, $y, $data[$x][$y]\n";
}
}
0800デフォルトの名無しさん
2007/05/26(土) 08:04:48use strict;
open FILE, "data.csv";
my(@data, @index, @ys);
while(<FILE>) {
chomp;
my($y, @d) = split /\s*,\s*/;
@index = @d, next unless @index;
push @ys, $y;
$data[ $index[$_] ][$y] = $d[$_] for 0..@d-1;
}
open FILE, ">", "out.csv";
for my $x (sort {$a <=> $b} @index) {
for my $y (sort {$a <=> $b} @ys) {
print FILE "$x, $y, $data[$x][$y]\n";
}
}
close FILE;
0801デフォルトの名無しさん
2007/05/26(土) 08:26:14こんなの例題に出てくるだろが。
open IN, "data.csv" ;
open OUT, ">", "out.csv" ;
print OUT "X,Y,Z\n" ;
(undef,my @index ) = split /,/, do{ $_ = <IN> ; s/\s+//g ; $_ } ;
for ( reverse (<IN>) ){
s/\s+//g ;
next if /^#/ ;
my ( $index, @dat ) = split /,/ ;
for my $i ( 0 .. $#dat ){
print OUT join "," ,$index,$index[$i],$dat[$i] . "\n" ;
}
}
close IN ;
close OUT ;
0802デフォルトの名無しさん
2007/05/26(土) 10:48:45おまいらやさしいな
0803797
2007/05/26(土) 13:30:30皆さん、どうもありがとうございます。
教えていただいたコードを読んで勉強します。
ところで、私のような初心者向けの本にはどんなものがありますか?
現在手元には、「Perlの絵本」といわゆる「らくだ本」の2冊がありますが、前者はまったくの初心者向けで今回の質問の答えは見いだせません。
一方、後者は私には取っつきにくくて、ヒントが書いてあるのかも知れませんが、見つけられませんでした。
なお、Visual BASICとTurbo PASCALはある程度勉強しました。
近くに大きな本屋がないので、現物を手にとって見比べることができません。アドバイスをいただければ幸いです。よろしくお願いします。
0804デフォルトの名無しさん
2007/05/26(土) 14:26:340805デフォルトの名無しさん
2007/05/26(土) 15:31:12という正規表現が
hogehogeにマッチして
/(\b\w+\b)\1/
という正規表現が
hoge hogeにマッチしないのは何故なんでしょうか?
0806デフォルトの名無しさん
2007/05/26(土) 15:36:26* \b は文字を消費しない。
0807デフォルトの名無しさん
2007/05/26(土) 16:15:33時間をかけて、「らくだ本」じっくりと2回読めばいい。
1回目は、解らない部分には「?」印を付けて、深追いしない。
2回目は、「?」印を付けた部分を重点的に読む。
その過程がなければ、らくだ本を辞書のように使うことはできない。
0808デフォルトの名無しさん
2007/05/26(土) 17:09:49本家だと2005年に出てるんだよね
ラクダさんも早く新しいの出して欲しいな
0809デフォルトの名無しさん
2007/05/26(土) 18:15:30"Mastering Perl" By brian d foy
ttp://www.oreilly.com/catalog/9780596527242/
0810デフォルトの名無しさん
2007/05/26(土) 19:24:22ひょっとして use encoding でコード指定すると \w が日本語(文字)にもマッチする仕様?
0812デフォルトの名無しさん
2007/05/26(土) 20:17:05perl + 日本語には興味無いんで調べたが、perlunicode にまんま書いてあるぞ。
o Character classes in regular expressions match characters instead
of bytes and match against the character properties specified in
the Unicode properties database. "\w" can be used to match a
Japanese ideograph, for instance.
0813デフォルトの名無しさん
2007/05/26(土) 20:27:38基本的には空白や記号類ではないような文字にマッチする。
通常は全ての言語の文字にマッチするけど、
use locale;すればロカールである程度は制御できるね。
0814デフォルトの名無しさん
2007/05/26(土) 20:39:14おお、すまそ。そしてありが�d
今更だけど jcode.pl からの乗り換えに躓いてました
精進してきます
0815デフォルトの名無しさん
2007/05/26(土) 21:20:04cgiのもなんかライブラリあったな
0816デフォルトの名無しさん
2007/05/26(土) 21:22:410817デフォルトの名無しさん
2007/05/26(土) 23:38:11ああ、それそれ!
名前忘れる位懐かしいw
0818気まぐれアナスイ
2007/05/27(日) 01:28:48perl.といえば、perldl-command.が…
!(-_Φ+){yes, So sexy.}
0819デフォルトの名無しさん
2007/05/27(日) 04:04:33@log=("1.txt","2.txt","3.txt","4.txt");
foreach $filename(@log)
{
open(LOG,$filename) || &er_("Can't open $filename");
@lines = <LOG>;
close(LOG);
}
@linesの中に、全てのテキスト内容を合成させた物が
入ってほしいのですが、最後に代入した4.txtの内容しか
入ってくれません。なぜでしょうか。
また、foreachで廻すのを条件として、
改造案を指南いただけると嬉しいです。
0820デフォルトの名無しさん
2007/05/27(日) 04:22:02の部分を
my @tmplines = <LOG>;
push(@lines, @tmplines);
の2行に置き換えてください。
千奈美に最後のやつしか残らないのは、
@lines = <LOG>;
が上書きしてるからです。
だから最後の結果しか残らない。
0821デフォルトの名無しさん
2007/05/27(日) 06:28:04ありがとうございます!できました。
0822デフォルトの名無しさん
2007/05/27(日) 18:20:34>Are you ready for manual configuration? [yes]
毎回、noを答えるんですけど、これ抑制できないんですか?
0823デフォルトの名無しさん
2007/05/28(月) 00:37:04> Are you ready for manual configuration?
俺は個人macもsolarisもyes選択してカスタマイズしたから、
最初にnoを選んだ時の挙動は分らんが、抑制もくそもこれって
最初の一回きりだろ?俺の環境だと出てこないんだけど。
何か変な事やってないか?
0824デフォルトの名無しさん
2007/05/31(木) 15:48:16sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ }」
の
flatten(@)は配列以外を引数に取れないということでしょうか?
あと
@deff = grep{ !{map{$_,1}@FileA }->{$_}}@FileB;
のmap{$_,1}@FileAなのですが{$_,1}はどういう式なのでしょうか
0825デフォルトの名無しさん
2007/05/31(木) 16:55:501) プロトタイプの@は残りの引数をすべてリストとして取り込むという意味。
(@) にはあまり意味がないんだけど、perlsubでも読んどき。
2) map の引数のBLOCKはリストコンテキストで評価されるから、
$_, 1 は $_ と 1 からなるリスト。
0826デフォルトの名無しさん
2007/06/01(金) 10:44:52最近の Perl でコマンドラインオプションの処理をする場合の標準を教えてください。
0827デフォルトの名無しさん
2007/06/01(金) 11:02:55Getopt::StdかGetopt::Longを使うのがいいよ。どっちも標準モジュール。
Getopt::LongはGetopt::Stdの機能も含むからGetopt::Longのほうがおすすめ。
0828デフォルトの名無しさん
2007/06/01(金) 11:04:230829デフォルトの名無しさん
2007/06/01(金) 12:00:06自分でちまちまとオプション解析するならそれでいいけどな。
0830829
2007/06/01(金) 12:01:080831デフォルトの名無しさん
2007/06/01(金) 13:21:53早速 Getopt::Long 使ってみました。使いやすそうですね。
御回答ありがとうございます。
>>828
すみません、ちょっと私には意味わからなかったのでスルーさせてくださいー。
0832デフォルトの名無しさん
2007/06/01(金) 16:08:31ありがとうございます
0833デフォルトの名無しさん
2007/06/01(金) 16:39:29$text =~ s/\s*//g;
を1行でする方法ないですか.
1行でなくとも見た目がよければいいです。
あとファイルの最初にmy宣言すると、その後のサブルーチン内でも
使えてしまうのですが、これは何か対策はありますでしょうか
0834デフォルトの名無しさん
2007/06/01(金) 16:51:36とか出来んわけではないが分けて書いたほうが見た目はよいだろ。
> あとファイルの最初にmy宣言すると、その後のサブルーチン内でも
> 使えてしまうのですが、これは何か対策はありますでしょうか
ファイルスコープのmyはグローバル変数だから、そういうもの。
嫌なら中括弧で囲っとけばいい。
0835デフォルトの名無しさん
2007/06/01(金) 16:58:410836デフォルトの名無しさん
2007/06/01(金) 17:06:21このぐらいなら、まあいい?
0837デフォルトの名無しさん
2007/06/01(金) 17:10:060838デフォルトの名無しさん
2007/06/01(金) 17:17:50実質4行w
0839デフォルトの名無しさん
2007/06/01(金) 19:21:130840デフォルトの名無しさん
2007/06/01(金) 19:23:33my $text = join "", map { s/\s*//;$_} <>;
0841デフォルトの名無しさん
2007/06/01(金) 19:43:020842デフォルトの名無しさん
2007/06/01(金) 20:35:25pu
0843デフォルトの名無しさん
2007/06/01(金) 23:04:430844デフォルトの名無しさん
2007/06/01(金) 23:14:33@ARGV を使うだけなのにご苦労様
0845デフォルトの名無しさん
2007/06/01(金) 23:45:56>826 名前:デフォルトの名無しさん:2007/06/01(金) 10:44:52
>はじめまして、 Perl 5.005_03 の世界から来ました。こんにちは。
>
>最近の Perl でコマンドラインオプションの処理をする場合の標準を教えてください。
>コマンドラインオプションの処理をする
>コマンドラインオプションの処理をする
>コマンドラインオプションの処理をする
0846デフォルトの名無しさん
2007/06/02(土) 00:07:520847デフォルトの名無しさん
2007/06/02(土) 01:45:09え!?もっと詳しく!!
0848デフォルトの名無しさん
2007/06/02(土) 02:56:27>>826は -Rrt -l --color=auto とかのコマンドラインオプションをパースしたいってことだろ。
学習目的ならいざ知らずそんなもんいちいち自前で処理する奴はマゾ。
0849デフォルトの名無しさん
2007/06/02(土) 12:28:03use Getopt::Stdするだけでプラス0.4秒
という時代とは違うんだから。
0850デフォルトの名無しさん
2007/06/03(日) 18:25:59$j =~ tr/0-9a-zA-Z/0-9a-zA-Z/;
じゃダメなん?
5.8.4で文字列はutf-8なんだけど。
0851デフォルトの名無しさん
2007/06/03(日) 18:42:50use utf8 した上でなら、それでいいんじゃね? 確かめてないけど。
0853デフォルトの名無しさん
2007/06/03(日) 19:13:390854デフォルトの名無しさん
2007/06/03(日) 19:15:52スクリプトのソースや$jに入っているcharsetが何かがわかんないと答えようがないわな。
0855850
2007/06/03(日) 19:28:12入力と出力をprintして見比べてるけどマズかった?
0856デフォルトの名無しさん
2007/06/03(日) 19:31:18$jの文字コード/UTFフラグの有無で挙動が変わってくる。
0857850
2007/06/03(日) 19:37:59入力、ソースはutf-8(のつもり)。
もしかしたら違うかもしれないから、入力のエンコード方式の調べ方があるなら教えてくれ。
>>856
マズいのか。
0858デフォルトの名無しさん
2007/06/03(日) 19:49:23Dump $j;
0860デフォルトの名無しさん
2007/06/03(日) 20:06:37入力ソースはなんなわけ?
0862デフォルトの名無しさん
2007/06/03(日) 20:18:46Encode::decodeに通して適切にutf-8フラグが立つようにせにゃならん。
0864デフォルトの名無しさん
2007/06/04(月) 13:51:27ねえ。これから態度の悪い質問者には答えない様にしろよ。
付け上がって調子乗ってくるのがオチなんだからさ。
0865デフォルトの名無しさん
2007/06/04(月) 14:05:21∧_∧
( ・ω・)=つ≡つ
(っ ≡つ=つ
/ ) s/.*/ババババ/g
( / ̄∪
0866デフォルトの名無しさん
2007/06/04(月) 14:35:29付け上がっているのはどっちですか?
ここは質問箱でしょ?
質問してください、というスレなんでしょ?
質問者あってのスレなんですよ。
そんな逆切れ見たいなことを言っていないで、
質問してもらったら「質問してくださってありがとう」くらい言ったらどうですか!
0867デフォルトの名無しさん
2007/06/04(月) 15:48:300868デフォルトの名無しさん
2007/06/04(月) 16:27:29とっとと質問せんかボケ
0869デフォルトの名無しさん
2007/06/04(月) 17:02:53質問があったら質問しますよ。
自分の至らなさを指摘されたからって、急に喧嘩腰にならないでください。
頭の悪い人はいちいち無駄な書き込みをしなくていいです。
0870デフォルトの名無しさん
2007/06/04(月) 17:07:09何が質問者あってだよ。回答者があってだろ。
回答者が居ないと何も出来ない癖に。
後 >>1 にも書いてあるけどここは "Perlの奥深さについて皆で語り合い、追求する"スレ。
低レベルな質問と会話はwebprog板でお願いします。
0871デフォルトの名無しさん
2007/06/04(月) 17:14:03無いんなら今すぐ作れや
俺は無職で一日中暇なんじゃアホ
0872デフォルトの名無しさん
2007/06/04(月) 17:15:39あたかも「みんなの意見」であるように強調しておきながら、
結局はラスト1行で単なる頭の悪い煽り屋さんであることをばらしてしまっていますね。
何だかんだいいつつ、自分の「低レベルな会話」は全面的に許してしまっている時点で、
説得力はゼロですね。修行を積んで出直しましょう。
0873デフォルトの名無しさん
2007/06/04(月) 17:19:05暇なら自分で質問を作って自分で回答していればいいじゃないですか。
内容によっては決して無意味ではありませんよ。
高度な質問と高度な回答をセットで提供するぶんには、結構喜ばれると思います。
とはいえ、無職の能無しがそういう問答を自演するのは難しいでしょうが…。
0874デフォルトの名無しさん
2007/06/04(月) 17:21:42皆の意見として言ったつもりは無いな。建前のような物。
ついでに俺は許してないよ? WebProgに案内してるだけ。
お前も個人叩きをするタダの頭の悪い煽り屋にしか
見えないんだが、本文に対する反論は結局ナシなのかな?
0875デフォルトの名無しさん
2007/06/04(月) 17:28:38なるほど、自分で自分を許していないのですね。
ではあなたが黙れば解決です。あなたにできる最大の「低レベルな会話の排除」ですね!
あと、「本文」というのは面白い言い方だと思います。
相手に突っ込まれて、いかに馬鹿なことを言っていたかが自覚できた途端に
そこを蜥蜴の尻尾みたいに切り捨てて、「ノーダメージだよーん」ということにするのですね。
0876デフォルトの名無しさん
2007/06/04(月) 17:34:270877デフォルトの名無しさん
2007/06/04(月) 17:40:23ほっとけ
0878デフォルトの名無しさん
2007/06/04(月) 17:53:57んーそうじゃないな。あくまでwebprog板でやれと希望してるだけだ。
本文って言い方そんなに面白いかな? お前に言われた事は自覚した、
とする。その次の段階の話だ。その次の話が出来なければただの
煽り合いで終わってしまうだろう? 後俺は120%黙る気は無いので宜しく。
0879デフォルトの名無しさん
2007/06/04(月) 17:55:19お前らまとめて詞ね
0880デフォルトの名無しさん
2007/06/04(月) 18:01:04低レベルな質問と会話はwebprog板でお願いします。
0881デフォルトの名無しさん
2007/06/04(月) 18:07:51「ここは "Perlの奥深さについて皆で語り合い、追求する"スレ」であるという理由で
「低レベルな質問と会話はwebprog板でお願い」していた人間も、
つまらないプライドをちょっと傷つけられたら、Perlの奥深さとまるで関係のない低レベルな会話だと自覚しつつも
「120%黙る気は無い」とまで言い切ってしまうのですよ。
俺はやっていいけどお前はダメ、の精神で物事を動かせると思ってるボクちゃんってこんな感じなんです。
0882デフォルトの名無しさん
2007/06/04(月) 18:14:120883デフォルトの名無しさん
2007/06/04(月) 18:14:54なんか、ここぞとばかりに言い負かそうとしてるが、それも違う。
俺は毎回このスレで変な奴が出る度に相手してやってるし、
俺自身もwebprogに行く気なんかハナから無い訳で。本音と建前ってやつだな。
ついでに言うとさっさと僕の"本文"に反論してくれませんか。
0884デフォルトの名無しさん
2007/06/04(月) 18:17:400885デフォルトの名無しさん
2007/06/04(月) 18:18:35相手すんないっとるんじゃボケ。
0886デフォルトの名無しさん
2007/06/04(月) 18:34:14やめてください。
0887デフォルトの名無しさん
2007/06/04(月) 18:43:06> 俺は毎回このスレで変な奴が出る度に相手してやってるし、
かんべんして(><;)
0888デフォルトの名無しさん
2007/06/04(月) 19:08:39ttp://www.so-net.ne.jp/vivre/kokoro/psyqa1087.html
0889デフォルトの名無しさん
2007/06/04(月) 19:33:07こんだけ嫌われまくってもきづかないほうに賭ける
0890デフォルトの名無しさん
2007/06/04(月) 20:04:260891デフォルトの名無しさん
2007/06/04(月) 20:18:16ということにしたいわけですね。
0892デフォルトの名無しさん
2007/06/04(月) 20:22:430893デフォルトの名無しさん
2007/06/04(月) 21:33:090894デフォルトの名無しさん
2007/06/04(月) 21:50:35http://www.gac.jp/article/index.php?stats=question&category=12&id=20208&command=msg
2chなんかに来ずにここで教えてクン続けてればよかったのに
0895デフォルトの名無しさん
2007/06/04(月) 21:59:040896デフォルトの名無しさん
2007/06/04(月) 22:45:50どっちもImage-Magi'c'になっててワラタ
借りてる鯖はlolipopかな?
0897デフォルトの名無しさん
2007/06/04(月) 23:15:20open FH,"/hoge/hoge.txt" #hoge.txtを開く
while (<FH>) { #FHファイルを行単位で読み込んでいく
$Str = $_; #変数Strにデフォルトで入力やパターンマッチになる特殊変数を代入
if( $Str =~ /__\w+__/g ){ #�@???
if( $Str =~ /__KEYWORD__/ ){ #�A???
$Str =~ s/__KEYWORD__/KEY/; #__KEYWORD__をKEYに置換する
}
}
print $str;
}
close FH;
コメントの部分の�@と�Aの説明がうまくできません。
�@は=~の部分がわからず、�Aは/と/で挟まなくて__KEYWORD__だけでも
同じ結果が返ってくるのではないかと思って悩んでいます。
よろしかった教えて頂けないでしょうか?
0898デフォルトの名無しさん
2007/06/04(月) 23:24:58$age = {%hoge};
というコードがあった場合、最後の代入で行われているのは
無名ハッシュコンストラクタの中でハッシュを評価することで、ハッシュのキーと値
からなるリストが生成され、それらを要素とする無名ハッシュが生成されて、そのリファレンスが
$ageに代入される。つまり%hogeのコピーのリファレンスを代入しているという考えでいいんでしょうか?
0899デフォルトの名無しさん
2007/06/04(月) 23:46:46Perl 正規表現でググればウンザリするほど答えが見つかると思います
>>898
そうです
0900デフォルトの名無しさん
2007/06/04(月) 23:47:18ではあなたが黙れば解決です。あなたにできる最大の「低レベルな会話の排除」ですね!
あと、「本文」というのは面白い言い方だと思います。
相手に突っ込まれて、いかに馬鹿なことを言っていたかが自覚できた途端に
そこを蜥蜴の尻尾みたいに切り捨てて、「ノーダメージだよーん」ということにするのですね。
0901デフォルトの名無しさん
2007/06/05(火) 00:05:57なんかすごい無駄だらけなソースだなあ・・・
0902デフォルトの名無しさん
2007/06/05(火) 00:31:500903デフォルトの名無しさん
2007/06/05(火) 00:33:23なんかすごい無駄だらけな文だなあ・・・
0904デフォルトの名無しさん
2007/06/05(火) 00:42:530905デフォルトの名無しさん
2007/06/05(火) 00:48:010906デフォルトの名無しさん
2007/06/05(火) 00:52:000907デフォルトの名無しさん
2007/06/05(火) 01:14:380908デフォルトの名無しさん
2007/06/05(火) 01:34:330909デフォルトの名無しさん
2007/06/05(火) 04:03:09それがこのスレのお約束
0910デフォルトの名無しさん
2007/06/05(火) 09:34:09お前、もう帰っていいぞ。
0911デフォルトの名無しさん
2007/06/05(火) 10:21:081.過去スレを入れるのはやめる。(前スレだけがあればよいと思う)
2.「エラーなどの問題への対処の相談には、問題が再現する完全かつ最短のソースを
作成して下さい。作成する過程で問題が解決する場合も多いです。」
との注意書きを >>1 に入れる。
(質問者が必要な情報を小出しにするのを防ぐため)
3.>>10をテンプレを入れる(但し、内容は、以下のように少し変更する)。
---------------------------------------------------------
# 【Perl 日本語処理の基礎の基礎】
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
# 次に、あなたが実行したい処理の内容を入れて下さい。
print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n";
sleep(1);
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
0912デフォルトの名無しさん
2007/06/05(火) 11:44:290913デフォルトの名無しさん
2007/06/06(水) 12:20:200914デフォルトの名無しさん
2007/06/06(水) 19:43:33クロスリファレンスで検索してもよくわかりませんでした。
このことに関することが書かれているウェブサイトや文献があったら教えてほしいです。
よろしくお願いします。
0915デフォルトの名無しさん
2007/06/06(水) 20:07:20naoya さんとこの循環参照の解説嫁ば?
ttp://d.hatena.ne.jp/naoya/20051012/1129115986
cross reference って日本語にすれば相互参照で、現実のプログラム中では
ぐるぐる回っちまうから、、、てことで
相互参照、循環参照あたりでググるのもありって事で。
0916デフォルトの名無しさん
2007/06/06(水) 20:24:490917デフォルトの名無しさん
2007/06/06(水) 20:38:180918デフォルトの名無しさん
2007/06/06(水) 21:11:42print my@aaa=(5,5,5,5,5);
print my@bbb=(3,3,3,8,8,8);
↑
これと、
↓
print my@aaa=(5,5,5,5,5);
print @aaa=(3,3,3,8,8,8);
↑
下のほうは使い終わった(もう処理しない予定の)@aaaを再利用しています。
上のやつと下のやつはどっちのほうが処理早いですか?
0919デフォルトの名無しさん
2007/06/06(水) 21:23:16好きに使え
0920デフォルトの名無しさん
2007/06/06(水) 21:26:15use Benchmark;
timethese 1000000, {
test1 => sub {
my@aaa=(5,5,5,5,5);
my@bbb=(3,3,3,8,8,8);
},
test2 => sub {
my@aaa=(5,5,5,5,5);
@aaa=(3,3,3,8,8,8);
}
};
0921デフォルトの名無しさん
2007/06/06(水) 21:26:27use Benchmark qw(timethese) ;
sub op1 { my @one = 0 .. 10_000 ; my @two = 0 .. 10_000 ; }
sub op2 { my @one = 0 .. 10_000 ; @one = 0 .. 10_000 ; }
timethese( 1000, { op1 => 'op1', op2 => 'op2' } ) ;
Benchmark: timing 1000 iterations of op1, op2...
op1: 15 wallclock secs (13.92 usr + 0.26 sys = 14.18 CPU) @ 70.52/s (n=1000)
op2: 22 wallclock secs (19.87 usr + 0.38 sys = 20.25 CPU) @ 49.38/s (n=1000)
0922デフォルトの名無しさん
2007/06/06(水) 21:32:11後者のほうがちょっとだけ速いな
0923デフォルトの名無しさん
2007/06/06(水) 21:35:42�dクス
ベンチマークの方法示してくれて更にトンクス
0924914
2007/06/06(水) 22:51:21L<> のところをしっかり読んでみたらクロスリファレンスってのがありました。
ハイパーリンクのようなものと見て問題ないでしょうか?
pod2htmlの解説でクロスリファレンスという言葉が出てきたときは、なにかこう
クロスリファレンスというものを記述すれば関連するpodがまとめて変換されたり
という、うれしい事が起こるのかななんて妄想してしまいました。(汗
(もともとそういうことができないかなと思って検索していたので・・・)
単純に文書間のリンクであるならば、簡単に理解できそうです。
どうもありがとうございました。
0925デフォルトの名無しさん
2007/06/06(水) 23:53:10これは面白いね。
sub op3 { my @one; @one = 0 .. 10_000; my @two; @two = 0 .. 10_000; }
を試したら更に遅くなった。
my @array = 0 .. 10_000;
sub op4 { my @one = @array; my @two = @array; }
sub op5 { my @one; @one = @array; my @two; @two = @array; }
は同じ程度の速度だから、 .. が遅くなるのかな。
0926デフォルトの名無しさん
2007/06/07(木) 00:20:49sub op1 { my @one = 0 .. 10_000 ; my @two = 0 .. 10_000 ; }
sub op2 { my @one = 0 .. 10_000 ; @one = 0 .. 10_000 ; }
op2のほうの@oneの書き換え時には、既に値を格納する10000個の番地が出来てるから早くなる。
op1のほうは@oneの番地10000個の他に@twoの番地10000個を作ってるから遅くなるのかなと。
それならば、
my @array = 0 .. 10_000;
sub op4 { my @one = @array; my @two = @array; }
sub op5 { my @one; @one = @array; my @two; @two = @array; }
のop4とop5がほぼ同じスピードってのも納得できそう。(4も5も番地の数は同じ。)
新しく配列作るより、使わなくなった配列を再利用したほうがスピード上がるってことかな〜と。
再利用したほうがメモリ効率も良さ気。
0927デフォルトの名無しさん
2007/06/07(木) 06:17:52921 は「 op2 の方が遅い」って話しだぞ
0928デフォルトの名無しさん
2007/06/07(木) 07:28:180929デフォルトの名無しさん
2007/06/07(木) 07:41:27print による時間ロスは等価だとして
use Benchmark qw(timethese) ;
sub op1 { my @one = 0 .. 10_000 ; my @two = 0 .. 10_000 ; }
sub op2 { my @one = 0 .. 10_000 ; @one = 0 .. 10_000 ; }
timethese( 1000, { op1 => 'op1', op2 => 'op2' } ) ;
Benchmark: timing 1000 iterations of op1, op2...
op1: 15 wallclock secs (13.92 usr + 0.26 sys = 14.18 CPU) @ 70.52/s (n=1000)
op2: 22 wallclock secs (19.87 usr + 0.38 sys = 20.25 CPU) @ 49.38/s (n=1000)
922 デフォルトの名無しさん sage 2007/06/06(水) 21:32:11
>>920
後者のほうがちょっとだけ速いな
0930921
2007/06/07(木) 08:03:09920 の結果を 922 は正しくレスしてる。晒す意味が分らん。
% perl --
use Benchmark;
timethese 1000000, {
test1 => sub { my@aaa=(5,5,5,5,5); my@bbb=(3,3,3,8,8,8); },
test2 => sub { my@aaa=(5,5,5,5,5); @aaa=(3,3,3,8,8,8); }
};
^D
Benchmark: timing 1000000 iterations of test1, test2...
test1: 2 wallclock secs ( 1.47 usr + 0.00 sys = 1.47 CPU) @ 680272.11/s (n=1000000)
test2: 0 wallclock secs ( 1.37 usr + -0.01 sys = 1.36 CPU) @ 735294.12/s (n=1000000)
0931デフォルトの名無しさん
2007/06/07(木) 09:13:36ベンチマーク結果の見方が正しくわからんけど、
>>927-929が間違ってて、他のレスは正しい、でok?
0932デフォルトの名無しさん
2007/06/07(木) 09:24:16sub op1 { my @one = 0 .. 10_000 ; my @two = 0 .. 10_000 ; }
sub op2 { my @one = 0 .. 10_000 ; @one = 0 .. 10_000 ; }
timethese( 1000, { op1 => 'op1', op2 => 'op2' } ) ;
Benchmark: timing 1000 iterations of op1, op2...
op1: 4 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 312.21/s (n=1000000)
op2: 6 wallclock secs ( 4.89 usr + 0.00 sys = 4.89 CPU) @ 204.46/s (n=1000000)
>>930と逆の結果っぽいんだけどなんで??
つか最後の
@ 312.21/s (n=1000000)と
@ 204.46/s (n=1000000)って
どっちが早いの??
0933デフォルトの名無しさん
2007/06/07(木) 09:39:360934デフォルトの名無しさん
2007/06/07(木) 10:05:22>>930は>>921が回した>>920のコードだから。
>>932
op1: 1000 iterations / 3.20 CPU (sec.) = 312.21/s
op2: 1000 iterations / 4.89 CPU (sec.) = 204.46/s
な感じ。なんで n=1000000 なのか知らないけど。
0935デフォルトの名無しさん
2007/06/07(木) 10:07:37> op1: 4 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 312.21/s (n=1000000)
> op2: 6 wallclock secs ( 4.89 usr + 0.00 sys = 4.89 CPU) @ 204.46/s (n=1000000)
実時間で4秒かかった。ユーザ時間3.2秒、システム時間0秒=合計3.2秒。1秒で(1000回のループを)312.21回実行できた
実時間で6秒かかった。ユーザ時間4.89秒、システム時間0秒=合計4.89秒。1秒で(1000回のループを)204.46回実行できた
どっちが速いかわかるよな?
0936デフォルトの名無しさん
2007/06/07(木) 10:41:11理解しますた。
use Benchmark qw(timethese) ;
timethese( 10000, { op1 => 'op1', op2 => 'op2' } ) ;
sub op1 {for(0..100){my@aa=(5 x 50)}}
sub op2 {map{my@aa=(5 x 50)}(0..100)}
↑
forとmap、ほとんど差が無くて実行するたびに結果が逆転してますた。
ベンチマーク便利だぬ
0937デフォルトの名無しさん
2007/06/07(木) 10:56:10x map { $_ => $_*$_ } 1..3 # OK: 1 1 2 4 3 9
x map { "a$_" => $_*$_ } 1..3 # NG: syntax error
x map { "a$_" , $_*$_ } 1..3 # NG: syntax error
x map { ("a$_" , $_*$_) } 1..3 # OK: a1 1 a2 4 a3 9
x map { +"a$_" => $_*$_ } 1..3 # OK: a1 1 a2 4 a3 9
x map ("a$_" => $_*$_), 1..3 # NG: a0 1 2 3
x map +("a$_" => $_*$_), 1..3 # OK: a1 1 a2 4 a3 9
x map +{ $_ => $_*$_ }, 1..3 # ??: {1=>1} {2=>4} {3=>9}
やっぱりPerlキモい
0938デフォルトの名無しさん
2007/06/07(木) 11:24:340939デフォルトの名無しさん
2007/06/07(木) 11:59:55$one[10001] = undef;
my @s = 0..10000;
sub op1 { my @two = @s ; }
sub op2 { @one = @s ; }
sub op3 { @one = 0..10000; }
sub op4 { my @two; $two[10001] = undef; }
Benchmark: timing 1000 iterations of op1, op2, op3, op4...
op1: 2 wallclock secs ( 1.87 usr + 0.00 sys = 1.87 CPU) @ 534.19/s (n=1000)
op2: 2 wallclock secs ( 1.86 usr + 0.00 sys = 1.86 CPU) @ 536.77/s (n=1000)
op3: 3 wallclock secs ( 3.55 usr + 0.00 sys = 3.55 CPU) @ 282.09/s (n=1000)
op4: 1 wallclock secs ( 0.15 usr + 0.00 sys = 0.15 CPU) @ 6666.67/s (n=1000)
(warning: too few iterations for a reliable count)
時間がかかるのは .. (範囲演算子)。
メモリの領域確保は誤差範囲。
メモリコピーは、まあそれなりのコスト。
0940デフォルトの名無しさん
2007/06/07(木) 12:02:420941デフォルトの名無しさん
2007/06/07(木) 12:19:48何番目の引数を使う、という様な引数の交換はできるでしょうか?
PHP でゆうところの次のものです。
> printf( "答えは%2$d" , 10, 11, 12 );
> 結果: 答えは11
0942デフォルトの名無しさん
2007/06/07(木) 12:23:16試せばいいのに
$ perl -e 'printf( q{答えは%2$d} , 10, 11, 12 );'
答えは11
0944925
2007/06/07(木) 17:22:41>>921を面白いと感じたのは、op1の方がop2よりも4割も速かったから。
以下のコードで確認したところ、範囲演算子の速度が違っているみたい。
use Benchmark;
timethese undef, {
test0 => sub { my @aaa=0..10_000; },
test1 => sub { my @aaa; my @bbb=0..10_000; },
test2 => sub { my @aaa; @aaa=0..10_000; },
test3 => sub { my @aaa=0..10_000; my @bbb=@aaa; }
};
Benchmark: running test0, test1, test2 for at least 3 CPU seconds...
test0: 3 wallclock secs ( 3.02 usr + 0.00 sys = 3.02 CPU) @ 194.37/s (n=587)
test1: 3 wallclock secs ( 3.46 usr + 0.00 sys = 3.46 CPU) @ 187.57/s (n=649)
test2: 3 wallclock secs ( 3.35 usr + 0.00 sys = 3.35 CPU) @ 88.06/s (n=295)
test3: 4 wallclock secs ( 3.41 usr + 0.00 sys = 3.41 CPU) @ 86.51/s (n=295)
左辺にmyが付かないと内部で配列のコピーが余分に1回発生してるような速度になってる。
0945デフォルトの名無しさん
2007/06/07(木) 18:14:180946デフォルトの名無しさん
2007/06/07(木) 18:27:25test0とtest1がなぜこんなに差が出るのか謎だな。
0947デフォルトの名無しさん
2007/06/07(木) 19:05:01# pen4 2.4 colinux This is perl, v5.8.8 built for i386-linux-thread-multi
Benchmark: running test0, test1, test2, test3 for at least 3 CPU seconds...
test0: 3 wallclock secs ( 2.09 usr + 0.98 sys = 3.07 CPU) @ 447.56/s (n=1374)
test1: 3 wallclock secs ( 2.94 usr + 0.28 sys = 3.22 CPU) @ 445.03/s (n=1433)
test2: 3 wallclock secs ( 3.12 usr + 0.11 sys = 3.23 CPU) @ 234.37/s (n=757)
test3: 3 wallclock secs ( 3.03 usr + 0.13 sys = 3.16 CPU) @ 220.89/s (n=698)
pen4 3.0 This is perl, v5.8.4 built for i386-freebsd-64int
Benchmark: running test0, test1, test2, test3 for at least 3 CPU seconds...
test0: 5 wallclock secs ( 3.22 usr + 0.00 sys = 3.22 CPU) @ 538.41/s (n=1733)
test1: 3 wallclock secs ( 3.18 usr + 0.00 sys = 3.18 CPU) @ 531.81/s (n=1691)
test2: 5 wallclock secs ( 3.23 usr + 0.01 sys = 3.23 CPU) @ 255.69/s (n=827)
test3: 4 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 260.74/s (n=825)
# セロリンD 2.8 This is perl, v5.8.8 built for i386-linux-thread-multi
Benchmark: running test0, test1, test2, test3 for at least 3 CPU seconds...
test0: 4 wallclock secs ( 3.23 usr + 0.00 sys = 3.23 CPU) @ 645.82/s (n=2086)
test1: 3 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 640.13/s (n=2042)
test2: 3 wallclock secs ( 3.15 usr + 0.00 sys = 3.15 CPU) @ 331.11/s (n=1043)
test3: 3 wallclock secs ( 3.15 usr + 0.00 sys = 3.15 CPU) @ 320.95/s (n=1011)
0948デフォルトの名無しさん
2007/06/07(木) 19:43:320949デフォルトの名無しさん
2007/06/07(木) 19:46:26my@a;@a=1..100; だと、@aを確保してから(1..100)を生成して、@aにコピーしてるんだろうな。
0950デフォルトの名無しさん
2007/06/07(木) 19:56:190951デフォルトの名無しさん
2007/06/07(木) 20:49:53test0: 3 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 801.88/s (n=2558)
test1: 3 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 796.88/s (n=2550)
test2: 3 wallclock secs ( 3.18 usr + 0.00 sys = 3.18 CPU) @ 414.78/s (n=1319)
test3: 3 wallclock secs ( 3.17 usr + 0.00 sys = 3.17 CPU) @ 400.63/s (n=1270)
0952デフォルトの名無しさん
2007/06/07(木) 21:43:010953デフォルトの名無しさん
2007/06/07(木) 21:56:390954デフォルトの名無しさん
2007/06/08(金) 12:17:03gtk2-perl使ってるのですが、なんかいい開発環境ありますか?
今はgeditとlv使いながらやってますが関数追いかけるのが大変で…。
eclipseがいいのであれば使ってみようと思います。他におすすめなのがあればぜひ。
guiはglade使ってて不満はないです。
0955デフォルトの名無しさん
2007/06/08(金) 12:24:050956デフォルトの名無しさん
2007/06/08(金) 14:32:330957デフォルトの名無しさん
2007/06/08(金) 15:50:19Linux板のエディタスレでやれ
0958デフォルトの名無しさん
2007/06/08(金) 16:30:460959デフォルトの名無しさん
2007/06/09(土) 19:36:050960デフォルトの名無しさん
2007/06/09(土) 23:53:32i386-freebsd-64int
Benchmark: running test0, test1, test2, test3 for at least 3 CPU seconds...
test0: 3 wallclock secs ( 3.22 usr + 0.00 sys = 3.22 CPU) @ 873.63/s (n=2812)
test1: 4 wallclock secs ( 3.17 usr + 0.00 sys = 3.17 CPU) @ 886.54/s (n=2812)
test2: 3 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 482.34/s (n=1545)
test3: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 444.37/s (n=1406)
0961デフォルトの名無しさん
2007/06/09(土) 23:59:32Benchmark: running test0, test1, test2, test3 for at least 3 CPU seconds...
test0: 3 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 792.04/s (n=2537)
test1: 3 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 792.04/s (n=2537)
test2: 3 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 415.30/s (n=1327)
test3: 3 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 395.86/s (n=1268)
AMD Athlon(tm) 64 Processor 3200+ This is perl, v5.8.8 built for i386-netbsd-thread-multi
Benchmark: running test0, test1, test2, test3 for at least 3 CPU seconds...
test0: 4 wallclock secs ( 3.36 usr + -0.02 sys = 3.34 CPU) @ 744.91/s (n=2488)
test1: 3 wallclock secs ( 3.01 usr + -0.01 sys = 3.00 CPU) @ 744.67/s (n=2234)
test2: 3 wallclock secs ( 3.21 usr + 0.00 sys = 3.21 CPU) @ 395.64/s (n=1270)
test3: 3 wallclock secs ( 3.21 usr + 0.00 sys = 3.21 CPU) @ 361.68/s (n=1161)
AMD Athlon(tm) 64 Processor 3200+ This is perl, v5.8.8 built for i386-freebsd-64int
Benchmark: running test0, test1, test2, test3 for at least 3 CPU seconds...
test0: 3 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 517.96/s (n=1651)
test1: 3 wallclock secs ( 3.20 usr + 0.00 sys = 3.20 CPU) @ 515.43/s (n=1651)
test2: 4 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 267.72/s (n=845)
test3: 4 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 252.86/s (n=806)
何故か同じマザー使ってるのに、FreeBSD だと遅い…
0962デフォルトの名無しさん
2007/06/10(日) 08:47:300963デフォルトの名無しさん
2007/06/10(日) 14:30:470964デフォルトの名無しさん
2007/06/10(日) 18:19:350965デフォルトの名無しさん
2007/06/10(日) 18:27:54qw/foo bar baz/ #=> ("foo","bar","baz")
0966デフォルトの名無しさん
2007/06/10(日) 18:30:04qq/foo bar baz/ #=> "foo bar baz"
qw/foo bar baz/ #=> ('foo','bar','baz')
0967デフォルトの名無しさん
2007/06/10(日) 18:32:12わかりました、ありがとうございます。
q//やqq/がラクダ本に載ってないということは、これらは最近追加された演算子という
ことなんでしょうか?
0968デフォルトの名無しさん
2007/06/10(日) 18:35:09p74
0969デフォルトの名無しさん
2007/06/10(日) 18:55:49貧乏人うぜぇ
0970デフォルトの名無しさん
2007/06/10(日) 19:35:020971デフォルトの名無しさん
2007/06/10(日) 19:37:010972デフォルトの名無しさん
2007/06/10(日) 19:50:34恥ずかしくないの?
0973デフォルトの名無しさん
2007/06/10(日) 20:07:090974デフォルトの名無しさん
2007/06/10(日) 20:36:340975デフォルトの名無しさん
2007/06/10(日) 20:43:13本当にレベルが高いやつはスルーするので、
あなたもレベルが低いようですね。
0976デフォルトの名無しさん
2007/06/10(日) 20:53:210977デフォルトの名無しさん
2007/06/10(日) 21:03:240978デフォルトの名無しさん
2007/06/10(日) 21:22:410979デフォルトの名無しさん
2007/06/10(日) 21:32:510980デフォルトの名無しさん
2007/06/10(日) 22:11:170981デフォルトの名無しさん
2007/06/10(日) 22:49:420982デフォルトの名無しさん
2007/06/11(月) 00:14:43はふつーにOKなのですが
my $FH2
open $FH2, "hoge.txt"
とかやると、エラーと言われます。ところが
open my $FH3, "hoge.txt"
これだとエラーとは言われません。なんででしょう?
5.6の環境でやっててヘンだなーと思ってたんだが
5.8だとFH2のパターンでも何にも言われない
うーん、、、
0983デフォルトの名無しさん
2007/06/11(月) 00:33:49perlfuncの古いの引っ張ってきて読んどくといいよ。
0984デフォルトの名無しさん
2007/06/11(月) 01:15:50なるほど、そういうことですか
まあ普通にFH1のように使えばいいんでしょうが
関係ないけど $# って廃止されるんですね
scalar(@array) とかで代替できるから問題ないんでしょうが
廃止しようとする意図がよくわからない
0985デフォルトの名無しさん
2007/06/11(月) 01:41:39「本当に○○な奴はそれを言わない」というたぐいの思い込みを前提に物を言うほうが、
よっぽど恥ずかしいと思います :-)
そういう前提を持つと、「言った時点でそいつは○○ではないことになる」から、
「言われたくないことを言われたくない人に言われる」ことが絶対無くなって、凄く気が楽になる、
それはわかりますが、かっこ悪い逃げ方にもほどがあります :-)
0986デフォルトの名無しさん
2007/06/11(月) 03:34:48Perlについての質問箱 31箱目
http://pc11.2ch.net/test/read.cgi/tech/1181500187/
0987デフォルトの名無しさん
2007/06/11(月) 04:52:06solaris の 5.6.0 にてやってみたが、エラー出ないぞ。
5.6.0 叩いているつもりで、5.005 呼んでるとかないか?
0988デフォルトの名無しさん
2007/06/11(月) 10:30:07Perlも6でいよいよ終わりっぽいな。
要素数と最大の添え字番号じゃPerlとRubyくらい違うだろうに。
0989デフォルトの名無しさん
2007/06/11(月) 14:18:55エラー隠蔽者のチンポしゃぶり乙!
0990デフォルトの名無しさん
2007/06/11(月) 18:33:250991デフォルトの名無しさん
2007/06/11(月) 22:49:16それはまじれすなのか
0992デフォルトの名無しさん
2007/06/12(火) 21:26:510993デフォルトの名無しさん
2007/06/15(金) 02:00:510994デフォルトの名無しさん
2007/06/15(金) 04:01:480995デフォルトの名無しさん
2007/06/15(金) 04:03:050996デフォルトの名無しさん
2007/06/15(金) 04:30:470997デフォルトの名無しさん
2007/06/15(金) 05:25:17pc11::tech - bbs for programers
0998デフォルトの名無しさん
2007/06/15(金) 08:47:110999デフォルトの名無しさん
2007/06/15(金) 09:58:521000デフォルトの名無しさん
2007/06/15(金) 10:06:3110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。