読み込んだファイルの内容を一気に取得

my $text = do { local $/; <$fh> };

ってすればいい。

while (<$fh>) {...}

とかせんでもいいのね。昔Perl書いてころは$/の方法でやってた気もするけどさっぱり忘れてる。