2020/02/22

Perl5.14未満で Can't locate object method "print" via package "IO::Handle"

Perl5.14より古いPerlで Can't locate object method "print" via package "IO::Handle" と言われるときは素直に use IO::handle; しましょう。

$fh->print('foo');

$fh が IO::Handle を欲してます。それだけのこと。

CPANモジュールで Can't locate object method "print" via package "IO::Handle" このエラーでテストがこけるなら、以下のようなコードを import メソッドあたりに突っ込んでおけば良いと思われます。

if ($] < 5.014000) {
    require IO::Handle;
    IO::Handle->import;
}

本気でファイルハンドルの取り違えとかならそれを直せばいいのでしょうが、バージョン依存のこれはもうロードするしかないっぽい。

サイト内検索