Memoize2

Perl Oneliner Tips

Perl の一行野郎 Effective

  1. ドキュメントを読む
  2. モジュールがインストール済みか確認する
    • モジュールの正確な名前が分かっているなら
      perl -M"JSON::XS" -e ''
      でエラーが出なければインストール済みだと分かる
    • モジュール名が曖昧にしか分からない場合は無理せずシェルの力を借りる
      $ perl -e 'print join("\n", @INC), "\n"' | xargs ls | grep -i json
      Perl が参照しているディレクトリ(@INC)を出力 | ls する | 好きな方法で検索する
  3. 実行コードの中に変数の値を渡す
    • $ <sample/members.csv perl -wnlsF"," -e '$F[0] eq $mem_id and print' -- -mem_id="100"
      (メンバー一覧のCSVの中から1列目のメンバーID(mem_id)が 100 の行だけを抜き出している)
      -s オプションと変数セット-mem_id="100"の組み合せ。
      平たく言えばAWKの -v オプションの使い方といっしょ
    • シェルの文字列展開を利用したバージョン
      $ mem_id=100
      $ <sample/members.csv perl -wnlsF"," -e '$F[0] eq '"$mem_id"' and print'
  4. File stat
    • 例えば、mtime(modified time)をUNIX秒ではなく人間が読める形式で表示
      $ perl -M"POSIX" -wle 'print POSIX::strftime("Last modified: %Y-%m-%d %H:%M:%S", localtime((stat shift)[9]))' filename
      -> Last modified: 2016-12-11 14:48:48
      同じ内容のコードを分かり易くするためにもう少し冗長に書くとこう
      
      $ perl -M"POSIX" -wle \
          'my $fname=shift; my @fileinfo = stat $fname; my $mtime = $fileinfo[9]; print POSIX::strftime "Last modified: %Y-%m-%d %H:%M:%S", localtime($mtime);' \
          filename
      
      
      statlsはLinuxと*BSDでオプションが異なったりするが環境にPerlがインストールされているならいつも同じ形式で出力できる

 

Last modified: 2016-12-18

Page Top

Index

Bw

Author: 中村 心 Shin Nakamura, Email: sn(at)i.basicwerk.com


© Shin Nakamura/BasicWerk 2008 - 2024