2019年5月21日火曜日

[Perl] 11. その他

Perl に関するメモはこれで最後かな。
私は基本的かつ断片的な知識しかないけれど、振り返ってみると思っていたよりも書くことが多かったです。また Perl を使う機会があったら見直してみようと思います。



スリープ
sleep  10;  # 10s スリープ
1秒未満の単位でスリープさせたい場合は Time::Hires 拡張モジュールを使う。

日付/時刻を取得
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$year += 1900;
$mon += 1;
my ($mday,$mon,$year) = (localtime(time))[3..5];
$year = $year + 1900;
$mon  = $mon  + 1;
my $now_date = sprintf("%04d\%02d\%02d", $year,$mon,$mday);

ファイルの更新時刻
my ($sec, $min, $hour, $mday, $mon, $year) = localtime((stat($file_path))[9]);
$year += 1900;
$mon += 1;
my $file_date="$year/$mon/$mday-$hour:$min:$sec";

乱数の生成
rand 関数を使って 0以上、引数未満の値をランダムで返す。整数で取得したい場合は int 関数を使う。
$num = rand(10);       # 0~9.99...
$num = int(rand(10));  # 0~9
seed 値を与えたい場合は、srand 関数を使って seed 値を設定できる。
$srand 2;              # seed
$num = int(rand(10));  # 0~9

シグナル処理
[Ctrl]+[c]キーでスクリプトを中断させたときの処理。できるだけ上部に書く。
sub sub_trap {
    die "\n"."exit (Ctrl-c)"
}
local $SIG{INT} = \&sub_trap;

バッファリングの無効化
$|=1;
元に戻したい場合は $|=0 とする。

コマンドラインから文字列置換
コマンドラインから指定したファイルの文字列を置換する。ファイルの指定はワイルドカード使用可。
$ perl -pi -e "s/<変更したい文字列>/<新しい文字列>/g" <ファイルのパス>




0 件のコメント:

コメントを投稿