だるろぐ

だるいぶろぐです

perl

openの -| と |-

気になった。 404 Blog Not Found:perl - open my $fh, "comand |"; # はモダンじゃない 書き込むときには'-|',読み込むときには'|-'を「ファイル名」として指定し、あとは実行したいコマンドと引数をリストとして渡す。 例えば外部コマンドを実行し、その結…

perldocの引数のPageName

↑を相談したときに教えてもらった。 困った事があったらperldocを見るのだけど、この引数、perlop perlvar -f -m -l perldoc しか知らなくて、結局ググってた。 perlopとかperlvarをPageNameというのは、perldoc perldoc を見て知っていたのだけど。 俺「Pag…

m//の戻り値

久々に。 use strict; use warnings; use Data::Dumper;sub p {warn Dumper [@_];my @c = caller;print STDERR " at $c[1]:$c[2]\n\n"} my $s = "hoge"; my ($d,$r) = (0,0); ($d,$r) = (($s =~ /sss/),($s =~ /hoge/)); p $d, $r; # case 1 ($d,$r) = (($s …

変数生成のコストってどんなもんですか

バッチ処理スクリプト書いてて思った。perlは変数生成のコストが意外に高いって以前聞いたのだけど、どんくらいなのかなと。 use strict; use warnings; use Benchmark qw/:all/; sub gen_once { my ($ho,$ge,$fo); my $re; for (1..1000) { $ho = 1; $ge = …

レキシカル変数の宣言場所より前で、その変数を使った関数を呼ばないようにしよう

タイトルだけで伝え終わった感満載。そして多分常識。 use strict; use warnings; use Data::Dumper;sub p {warn Dumper shift;my @c = caller;print STDERR " at $c[1]:$c[2]\n\n"} my $str = 'foo_hoge'; p 'matched' if matched($str); my @list = qw/hog…

ローマ数字とかをutf8からsjisに変換するときに、Encodeで化けてもUnicode::Japaneseだと化けなかったりする

use strict; use warnings; use Encode; use Unicode::Japanese; my $s = 'ほげⅠふが'; my $e = $s; $e = decode('utf-8', $e); $e = encode('shiftjis', $e); open my $fe, '>', 'encode'; print $fe $e; # ほげ?ふが close $fe; my $u = $s; $u = Unicode:…

JSON::SyckよりJSON::XSを使った方がいいよという話

お話 deal「循環参照してるハッシュrefをJSON::Syckでダンプしようとするとこける」 http://gist.github.com/199093 kt「それJSON::XSで」 以上。イイハナシダナー おまけ ハッシュrefのキーが複数あったとして、 複数のキーが同じ変数を参照していたり ある…

yamlに __path_to(foo/bar)__ とか書こう

こめったーのソースを見た二人が感心してたのでこのネタを書こうと思った。 こめったーの設定ファイルはyamlで、中にこんな記述がある。 View::Template: INCLUDE_PATH: - __path_to(root/template)__ - __path_to(root/template/default)__ この __path_to(…

perlでもrubyでも実行できるプログラムを書こう

YAPCでTAKESAKOさんがやっていたやつだけど print 0 ? "hello, ruby\n" : "hello, perl\n"おもしろいなあ。極めすぎると変態に進化するので注意。

Data::Modelで複数ANDとかLIKEな検索

Data::Modelでwhereに何か指定するときは普通ハッシュ使って my $result = model->get(table => { where => [ name => 'hoge' ], }); とかしますが、ググるときみたいに複数ワードでLIKE検索したいんじゃいってときはハッシュの値を更にハッシュrefにして wh…

TemplateのモジュールをUSEするのがめどいなど

http://d.hatena.ne.jp/dayflower/20060531/1149037928 3年も前の記事なので、多分余計なお世話と思いますが 毎回 [%- USE Dumper -%] [%- Dumper.dump(var) %] [%- USE LinkTo -%] [%- LinkTo.link_to(text, args) -%]とか書くのがめどいっていうのは自分も…

evalするなら local $@ しよう

$1とか$@とかの特殊変数はグローバルなので、こいつらを使うときはlocal宣言しようと。 package Oya; use Mouse; sub hoge { eval {die "died"}; "hoge" } 1; use Oya; use strict; use warnings; my $o = Oya->new; if ($@) {warn "err 1"} warn $o->hoge; …