||=を使った代入
なんと||にも省略記法があるということを知った.そういえばどこかで見たPerlコードで||を使ってサブルーチンの引数のデフォルト値を代入している文があったような...
$hoge ||= $bar # => $hoge = $hoge || $bar
なので$hogeがundef or 0に限り$barを代入するということ.orやandを使って条件分岐させるってなんだかLispみたいですね.
これを利用したサブルーチンの例
hoge(1,2); hoge(1); hoge(); sub hoge{ my ($foo, $bar) = @_; $foo ||= 20; $bar ||= 30; print "foo=$foo bar=$bar\n"; } __END__ # 実行結果 foo=1 bar=2 foo=1 bar=30 foo=20 bar=30
なかなかサッパリ書けました.||=ではないけれど,||を利用してデフォルト値を設定するのにはこんな方法もある.
piyo(1,2); piyo(1); piyo(); sub piyo{ my $foo = shift || 20; my $bar = shift || 30; print "foo=$foo bar=$bar\n"; } __END__ # 実行結果 foo=1 bar=2 foo=1 bar=30 foo=20 bar=30
多分,こっちの方を昔見たことある.