Perl

引数の名前を知る方法 Data::Dumper::Names

みんなの好きなprint 文デバッグに、ちょっとした悩みがあるとしたら、冗長で"こダサい" ということかもしれません。 こんな風に書いたことがあるでしょう? print '$target: ' . "$target\n"; これを簡単にするために、専用のサブルーチンを用意してみます…

モンテカルロ法でサイコロ関数を検証

モンテカルロ法をご存知でしょうか? 初めての方に、ちょっとだけ私から解説をさせてください!例えば、サイコロの目。 サイコロを振って、今出た目が3、だったとしましょう。 この時、3が出た確率は(一回しか振ってないので)100% ですが、更に何回か振る…

一次元配列同士の比較のいろいろなやり方

問題 @a = (1,2,3); @b = (1,2,3); のような配列があったとして、これらの中身が同じ(@a = @b) であることを確認したいと思います。 細かい条件として、値は正の数字のみ(負はない、)で並び順は気にしない、かつ同じ番号はないという事にします。かんたんに…

ハッシュの複数の要素を配列で取得したいとき

これは知らなかったな〜(と、これは、無邪気に喜んでいたら恐ろしい事実が発覚したキロクです。) my $rh_data = {'a'=>1,'b'=>2,'c'=>3}; printf("%d,%d,%d\n",@{$rh_data}{qw(a b c)}); 結果: 1,2,3 Perl Hacks P.145 のコードを眺めていて気付きました…

+{ って何だろう?

Plagger のソースコードで気になる記述が。 /usr/lib/perl5/site_perl/5.8.8/Plagger% ack '\+{' Plugin/Publish/CHTML.pm 82: $self->add(+{ Plugin/CustomFeed/Frepa/RecentComment.pm 33: push(@msgs, +{ Plugin/CustomFeed/Frepa/FriendDiary.pm 25: pus…

-d_ ってなあに?

Plaggerのソースコードの中に、私の知らない表現があったので興味を惹きました。 % ack "\-d_" Plagger/Cache.pm 11: mkdir $conf->{base}, 0700 unless -e $conf->{base} && -d_; おお!?"-d_"のアンダーバーの部分って何!?Perl のリファレンスで探した…

背景色を指定してサムネイル画像を作りたい

こんなプログラムを作りたい。<仕様> 所定の枠(120px,100px)の中に、画像を当てはめたい。 画像は縦横比を壊さずに拡大・縮小して張り込む。 縦や横に隙間が出た場合は、指定の色(赤)を流し込んでおく。ひとまずできた。 1 #!/usr/bin/perl 2 3 use strict…