一定時間ログを吐かないとイスが飛ぶ Log::Minimal::FlyingChair というモジュールを作りました
package Log::Minimal::FlyingChair; use strict; use warnings; use utf8; use open IO => ':encoding(utf-8)', ':std'; use Log::Minimal; use Time::HiRes qw(sleep); our $VERSION = '0.01_01'; our $Interval = 5; our $Chair = "ε=コ_"; my $pid; my $print_orig = $Log::Minimal::PRINT; $Log::Minimal::PRINT = sub { $print_orig->(@_); kill "TERM", $pid if $pid; $pid = fork || do { $|++; while (1) { sleep $Interval; for (my $i=0; $i<70; $i++) { print "\r"." "x$i.$Chair; sleep 0.02; } print "\n"; } }; }; END { kill "TERM", $pid if $pid; } 1;
こんな感じで使います。
#!/usr/bin/env perl use strict; use warnings; use Log::Minimal; use Log::Minimal::FlyingChair; $Log::Minimal::FlyingChair::Interval = 2; #$Log::Minimal::FlyingChair::Chair = '(; Д ) ゜ ゜'; infof("hajimari〜〜〜〜"); sleep 12; # モタモタ infof("owari〜〜〜〜"); exit;
Log::Minimalは0.08からカラーリングもできるようになったし本当によいモジュールですね^^