>:scalar
是什么意思?
以前从未见过这种代码..
答案 0 :(得分:9)
特定的“>:THING”语法告诉Perl IO系统使用THING指定的层。看一下PerlIO documentation for'layer'。常见的图层是'raw'和'utf8'。
在这种情况下,这允许您使用$ stdout作为内存文件,该文件最终应包含发送到STDOUT的任何内容。更一般地说,语法允许您打开内存中的文件,然后将文件句柄发送到通常写入文件的其他函数,以便您可以收集它们的输出(或提供它们的输入)。
您也可以通过打开一个标量引用的“文件”来获得相同的结果:
open my $fh, ">:scalar", \$scalar or die;
open my $fh, ">", \$scalar or die;
它由PerlIO提供,由PerlIO::scalar实现,但您不必“使用”该模块来访问该功能。
答案 1 :(得分:3)
Perl使用layered IO system。在链的底部,可以找到一个处理访问媒体的图层。 scalar
是IO系统层,用于处理标量而不是文件的读取和写入。说
open(my $fh, '>:scalar', \$scalar)
标量句柄的相当于说
open(my $fh, '>:unix', $file_name)
用于OS句柄。它完全是多余的,因为Perl已经知道它是标量句柄而不是操作系统句柄。