Perl6::Sayはまさにそれを行います。
say FILEHANDLE TEXT
Perl の通常非常に面倒な間接メソッド呼び出し構文を利用して、構文を巧みにエミュレートします。IO::Handleをロードして、すべてのファイルハンドルをオブジェクトに変換し、IO::Handle->say
. 今say FILEHANDLE TEXT
は実際にFILEHANDLE->say(TEXT)
です。
それには注意点があります。ドキュメントから...
Use it just like print (except that it only supports the indirect
object syntax when the stream is a bareword). That is, assuming
the relevant filehandles are open for output, you can use any of these:
say @data;
say FH @data;
FH->say(@data);
*FH->say(@data);
(\*FH)->say(@data);
say $fh, @data;
$fh->say(@data);
but not any of these:
say {FH} @data;
say {*FH} @data;
say {\*FH} @data;
say $fh @data;
say {$fh} @data;
更新: これをさらに簡単にするために、Perl6::Say またはPerl のバージョンに応じてロードするSay:: Compat をアップロードしました。use feature 'say'
これは、 Devel::Declareをいじらずに得られる最高のものです。