@kyanny's blog

My thoughts, my life. Views/opinions are my own.

File::Temp で作ったファイルをオープンできない

my $tmp = File::Temp->new(UNLINK => 0, SUFFIX => ".html");
print $tmp $html;
my $data = do {
  local $/;
  open my $fh, "<", $tmp->filename;
  <$fh>;
};
print $data;

これが期待したように動かない。ファイルは /tmp/ 以下に残っているのだけ、なぜプログラム中から読めないんだろう。困ったなあ。

HTML::Parser 依存のモジュールを使いたくて、それがファイル実体を必要とするのだけどデータは DB にはいっていてファイルを作りたくないなあ、というケースで、こんなことをしてみたけどダメでした。正規表現でやっていたせいでちょっとどこかが狂うと全然動かなくなってまさに嫌な思いをしています。

追記

できました。 id:tomyhero ありがとうございます!

print $tmp $html;
$tmp->close();

をする必要があったみたいだ。