2012-01-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"…

perl関連ワンライナー集

ファイル内の文字列を一斉置換 find . -type f -name '*.pm' -print0 | xargs -0 perl -i -pe 's/before/after/g' 文字コードの一斉置換。 それぞれEUC-JPとSJISからUTF-8 SJISは波ダッシュ問題回避のためにCP932で指定する。 find . -name '*.pm' | xargs n…

2つの配列レファレンスを結合する

単なる配列だと普通にやればできるけど、レファレンスの場合はちょっと面倒かな… use Data::Dumper; my $arr1 = [1..3]; my $arr2 = [(@$arr1,@$arr1)]; print Dumper($arr2); # 1,2,3,1,2,3

gitコマンドメモ(ファイル削除を反映してcommitし直し)

git

gitでcommitをしたが、何やら消したファイルの反映ができていない。 ということで削除したファイルを追加して直前のコミットをやり直した。 メモメモ… git add -u git commit --amend

syntaxhighlighterを使ってみた

こちらの記事では、ソースコード部分をはてな記法のスーパーpre記法を使って書いてました。しかし、行番号を載せる方法がどうしても無いみたいなので、syntaxhighlighterを導入してみることにした。非常に分かりやすい説明がこちらのブログに載っておりまし…

javascriptのapply呼び出しについて

apply呼び出しは、ある関数を全く別のオブジェクトの関数として呼び出す関数で、callとの違いは匹数をargumentsで指定できること、とこの前勉強した。こちらの記事など参考になりました。 applyの利用方法 | JavaScript capsuleしかし、例えばこんなコード f…

javascriptのapplyについて

apply呼び出しは、ある関数を全く別のオブジェクトの関数として呼び出す関数で、callとの違いは匹数をargumentsで指定できること、とこの前勉強した。こちらの記事など参考になりました。 applyの利用方法 | JavaScript capsuleしかし、例えばこんなコード f…

CPANモジュール読むと勉強になる…

オープンソースだと提供されているライブラリのソースコードが公開されているので、ドキュメントを読んでよく分からなくてもソースコード読めばなにしてるかバッチリわかるし、自分自身の勉強にもなって一石二鳥ですな。今仕事で触っているコードがClass::Da…

ネット業界の動きの激しさ

SIerからWeb企業に移ってみて、この業界の流れの速さを肌で感じる毎日。 SI業界にいたときも、Web2.0なりSOAなり流行っては消える言葉や技術に翻弄されながら時代の流れは早いと思っていた。ところがどっこいWeb企業に来るとその速度がさらに半端無い。例え…