perl

ワンライナーでSHA1ハッシュを取得

perl -MDigest::SHA=sha1_hex -le 'print sha1_hex("hoge")' # output: 31f30ddbcb1bf8446576f0e64aa4c88a9f055e3c

YAMLの最終行について

パースエラー perlのYAMLモジュールだと 最後に改行を2ついれておかないとパースでエラーになる。 くそぉ〜。文法的には間違ってなかったのになぁ。。。やられた。ってわけで改行を2ついれること。 flash: - hoge - fuga YAML::Syncを使えばそんな心配いら…

perldocでソースを読む

perldoc -m [Module名] これソース追うときに便利! ただdefaultだとmoreで開いてしまうため不便。 PAGER=less っていう環境変数を用意しておけばlessで開けるから便利。 PAGER=less perldoc -m [Module名] こんな感じ。 またはPAGERをexportしとけばok.

ファイルのlockについて

flcokについて flockってファイルハンドルを開いた後にチェックする印みたいなもんだった。 つまりはflockの戻り値でlock中かどうかの判断をするみたい。あってんかな?? 詳しくはここを見てください。 flock(FH, 1) 読込中なので書込をロック、あとから来…

モジュールをインストールする際の応答を減らす

/usr/lib/perl/5.8.8/CPAN/Config.pm 'prerequisites_policy' => q[ask], この一行を書き換える。 'prerequisites_policy' => q[follow], これでyesと打つ回数はだいぶへる。 ちなみにCPANのproxyの設定もConfig.pmでする。

ちょっと変な書き方

ハッシュの初期化 my %hoge = (a => b, c => d, e => f); my %hoge = qw/a b c d e f/; my %hoge = (a => b => c => d => e => f); これ全部一緒なんだって。 一番下が一番衝撃だったw きもすぎる。。。。 さすがperl。 ちなみに "=>" "," と同じ。 ""とかで…

scalerと同じ意味

memo @a = qw/a b c/; print scalar @a; #実行結果 3@a = qw/a b c/; print ~~ @a; #実行結果 3 ちょっとコードが変態的になるwww つかわね〜なぁw

2進数、8進数、16進数表現

2進数 perl -le 'print 0b0101'#result 5 8進数 perl -le 'print 0101'#result 65 16進数 perl -le 'print 0x0101'#result 257

ちょっとした豆知識

コンテキストの切り方 コンテキストをきりたいなら+をつければいい。 これは例をみた方がわかりやすいから。 それみて。 perl -le 'print ("a") x 100;' #出力結果 aperl -le 'print +("a") x 100;'#出力結果 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa…

楽してワンライナー

自動で改行するようにする perl -le '~' これで~のところにコードを書くと自動で改行される。 これを等価のコードで書くとこんな感じ。 #!/usr/bin/perl$\="\n";~~~~~~ ということ。つまりは $\="\n"と -l が同じ意味。 ちなみに$\は行末に何を出力するかっ…

useとrequireについて

2つのイメージ use モジュール名 これはビルトイン。がちゃんとモジュールに組み込んじゃうんです。 正確には実行前のコンパイル時に評価される。 require モジュール名 useに対してrequireはそのスコープ中のみモジュールが使用できる感じ。 こっちはスク…

仮想ハッシュ(Pseudo-hashes)

定数と定義して使用 サンプル perl -w -le '$phash = [{a=>1, b=>2, c=>3}, "hoge", "fuga", "foo"]; print $phash->{a}' wをはずすとwarningがでなくなる。 説明 $phash->[1] $phash->{a} 1.の場合はデリファレンスして配列の要素を参照しているだけ。 2.の…

Catalyst optioin

http://domain?debug_info=1 http://domain?dump_info=1 で詳細なデバッグ情報がみれる。 ただしデバッグモードで起動したらのお話

ちょっとしたmemo

サンプルコードを試してみた。 id:perlcodesampleさんのブログを見て忘れそうなとこをメモってみた。 caller (1) caller (2) caller 0 (3) caller 1 (1)の場合 ($package, $filename, $line) lineは呼び出し元の関数がある行数が返ってくる。(2)の場合 ($pac…

redhat系のパッチ

use overload; => 演算子とか書き換えれるモジュール。 これでバグがある。blessしたオブジェクトをコピーしてblessすると 1回目のbless時にoverloadを使用していないオブジェクトをコピーして 使用するとバグる。 よーするに、 リファレンスが他のクラスへ…

mac(leopard)でcpanを使ってモジュールをいれる時の備忘

Bundle::CPAN(LWP)をインストールする際、こける。 Running install for module 'Net::Cmd' Running make for G/GB/GBARR/libnet-1.22.tar.gz Has already been unwrapped into directory /Users/******/.cpan/build/libnet-1.22-WuyGyk Has already been ma…

perlでming

必要ファイル version 0.3使用 ming-0.3.0.tar.gz ming-perl-0.3.0.tar.gz install 手順 tar xzvf ming-0.3.0.tar.gz tar xzvf ming-perl-0.3.0.tar.gz cd ming-0.3.0 cd perl_ext perl Makefile.PL cp ../src/ming.h ../ make make install つまったとこ ma…

デバッグ用

"project".pm WHILEループの上限アップ $Template::Directive::WHILE_MAX = 10_000; 環境変数 クエリーをはかす export DBIX_CLASS_STORAGE_DBI_DEBUG=1

perlでming

必要ファイル version 0.3使用 ming-0.3.0.tar.gz ming-perl-0.3.0.tar.gz install 手順 tar xzvf ming-0.3.0.tar.gz tar xzvf ming-perl-0.3.0.tar.gz cd ming-0.3.0 cd perl_ext perl Makefile.PL cp ../src/ming.h ../ make make install つまったとこ ma…