週末には少しPerlを。

Perlスクリプトの学習日記です。

ワンライナーで足し算したり時刻表示したりする

端折っていますが 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は負の値もうまく捌いてくれるとのこと。