Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

簡単にログを出力する一行

を思いついたのでやってみた。
例えば、変数$msgの中身を/tmp/msg100123.logに保存する。

use Data::Dumper qw(Dumper);
# 何か$msgについて処理
open LOG, '>', '/tmp/msg100123.log' and print LOG Dumper($msg) and close LOG;

一般的にはopen()が失敗したら例外を投げるべきだけれど、そこまでしっかりしたものじゃないときは便利かも。
何がいいって、そのまま文章として読めるのがいいよね。
ただまあ、普通は、デバッグ用のプロセスをちゃんと用意してたりするのだけれど。




あと、最初はファイルハンドルを変数に間接にしてたらエラーになった。

open my $fh, '>', '/tmp/msg100123.log' and print $fh Dumper($msg) and close $fh;
Can't use an undefined value as a symbol reference at - line 413.

同じ行で宣言してるから、print と close の時点ではまだ確定してない、みたいな感じだろうか。
あれ、じゃなんでファイルハンドルならいいんだ?
グローバル扱いだからかな?