2012-12-01から1ヶ月間の記事一覧

if(変数)をやってみた結果

perlでは負の値や空のレファレンスでもif(変数)でtrueと判断されてしまう。 my $one = 1; my $minus_one = -1; my $only_declare; my %empty_hash = (); my @empty_arr = (); my $empty_hash_ref = +{}; my $empty_array_ref = +[]; print "one\n" if $one; …

hashレファレンス内の変数を初期化すると…

hashレファレンス内の変数を初期化すると、その変数は切り離されてhashの中には元々の変数のコピーが残るようだ。言葉にするとややこしいが、こんな感じ。 use strict; # 空のハッシュを別のハッシュの中に入れる my $inner_hash = +{}; my $outer_hash = +{…

ファイルの中身を一括で読み込む方法

これまでファイルの中身を読み込むとき、下記のように延々とループ回してました。 my $file_name = 'hoge1.txt'; my $str; open $fh, '<', $file_name; while(my $line = readline($fh)){ $str .= $line; } close $fh; print $str; でも、下記のようにすれば…

ブロックスコープを使わずに関数や変数を局所化する方法

Perlではブロックスコープを使用して関数や変数の局所化が可能である。しかし、例えばその結果として出てくる変数がそのブロックの外で必要になる場合、一度それ用の変数をブロック外で宣言してから代入してやる必要がある。 my $hoge; { sub get_one_plus_o…

perlワンライナー集

pmファイルにデバグで入れた$DB::singleを一掃するときのワンライナー find . -type f -name '*.pm' -print0 | xargs -0 perl -i -pe 's/.*DB::single.*\n//g'

ある配列の中に他の配列の要素がまるまる入っているか見るルーチン

ちょっと必要だったんで作りました。 List::Util::firstを使って実装してみました。 use List::Util qw/first/; use Carp; sub includes { my ($tgt,$checker) = @_; confess "tgt not arr ref" unless ref($tgt) eq "ARRAY"; confess "checker not arr ref"…