Perl

Rubyのinject関数の記事を見た

一般的には畳み込み(fold)と言うらしい。Perlでも標準にライブラリにreduceという関数がある(なんでreduceなんだ)。使い方を見ると use List::Util $foo = reduce { $a < $b ? $a : $b } 1..10; # min $foo = reduce { $a lt $b ? $a : $b } 'aa'..'zz'; # m…

switch文

perlでヒストグラムを書きたいときにloop文を利用すると多重になり恐ろしく低速になってしまう。if文で書くのが早いが見苦しい。このモジュールを使うと見やすくてよい。 use Switch '__'; switch ($val) { case __ < 10 { $class_1++; } case __ < 20 { $cl…

U検定プログラム

unless(open(FILE_1, $ARGV[0])){ print "File ", $ARGV[0], " is not found."; } unless(open(FILE_2,$ARGV[1])){ print "File ", $ARGV[1], " is not found."; } $file_1_line = <FILE_1>; $file_1_line =~ s/\x0A\x0D//g; $file_1_line =~ tr/\x0A\x0D//d; $file_</file_1>…

ハッシュのハッシュ

%HoH = ( primarykey=>{ secoundarykey1 => "value1", secoundarykey2 => "value2", } ) うーん、見た目がちょっと分かりにくい $HoH{primarykey}{secoundarykey1} = "value1"; でもよい?

モジュールを直接インストールする。

CPAN上でHTML::Parserがコンパイルできないので、以前上手くいった実行ファイルを移動する。 ファイルはC:\cygwin\lib\perl5\site_perl\5.8下のHTMLに存在しているらしい。 これを移動して、make test, make installすれば良いのでないだろうか?

スクリプトの計算処理

http://0xcc.net/blog/archives/000164.html 浮動小数点演算の10進法と2進法の違いからくる問題と小数点以下切捨ての問題とx86命令固有の問題がミックスしてちょっと書き方を変えると答えが変わる話。 最初の2つはよく考えれば、気づくとおもうけど 80ビッ…

perlでcsv

http://blog.livedoor.jp/dankogai/archives/50765677.html CSVからデータを取り込むときText::CSVが便利だよという話。Perlメモでも","や\sの扱いの対処法が出ていた。業務用のCSVでは重要な問題らしい。 数値のみのCSVではsplitから@dataに取り込むところ…