gau*_*inc 1 perl implementation declaration
简单的问题:
我想写一个像这样的函数say.
但它有一个不好的功能:文件句柄.
say FILEHANDLE LIST
say FILEHANDLE
say LIST
say
Run Code Online (Sandbox Code Playgroud)
如何申报?可能吗?
PS:我找到了一个例子myopen(*;$),但这不是一回事.
PPS:我在旧的Perl版本中需要这个功能,因为它写起来很烦人print "\n"
谢谢!
它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;
Run Code Online (Sandbox Code Playgroud)
更新:为了使这更简单,我刚刚上传了Say :: Compat,它加载了Perl6 :: Say或者use feature 'say'你的Perl版本.
如果不玩Devel :: Declare,这是你可能获得的最好成绩.
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |