ワンライナーで足し算したり時刻表示したりする
端折っていますが Famous Perl One-Liners の読書メモの3回めです。
足し算する
perl -MList::Util=sum -alne 'print sum @F'
List::Utilはコアモジュールなのでインストールの心配無用。 「-Mmodule=arg」は次と等価。
use module qw(arg)
-aスイッチの「auto-splitting」の結果、各入力行はフィールドに分割され配列@Fに格納されます。
シャッフルする
perl -MList::Util=shuffle -alne 'print "@{[shuffle @F]}"'
@{[ ]} は無名配列を作って直後にデリファレンスする。 ニックネームは「Baby cart」。
絶対値にする
perl -alne 'print "@{[map { abs } @F]}"'
時間に関するあれこれ
UNIX time を表示する
perl -le 'print time'
現在の日時を表示する。
perl -le 'print scalar localtime'
昨日の日時を表示する
perl -MPOSIX -le '@now = localtime; $now[3] -= 1; print scalar localtime mktime @now'
POSIXモジュールのmktimeは負の値もうまく捌いてくれるとのこと。