2011-09-21 45 views
8

>:scalar是什么意思?

决不看到这种代码之前..

回答

9

的特定“>:东西”语法告诉Perl的IO系统使用由THING指定的层。看看PerlIO documentation'层'。常见的图层是'原始'和'utf8'。

在这种情况下,这允许您使用$ stdout作为内存中的文件,该文件最终应包含发送到STDOUT的所有内容。更一般地说,语法允许您打开内存文件,然后将文件句柄发送到通常写入文件的其他函数,以便您可以收集其输出(或提供其输入)。

您也可以通过打开“文件”,这是一个标量的参考实现同样的结果:

open my $fh, ">:scalar", \$scalar or die; 
open my $fh, ">", \$scalar or die; 

它是由PerlIO的提供,并通过PerlIO::scalar实现的,虽然你不必“使用'访问该功能的模块。

+0

'>:scalar'是什么意思? – asker

+0

我已经在开始时添加了。 – Alex

3

Perl使用layered IO system。在链条的底部,会发现一个处理访问媒体的层。 scalar是IO系统层,用于处理从标量读取而不是文件的读取和写入。话说

open(my $fh, '>:scalar', \$scalar) 

标量句柄是说

open(my $fh, '>:unix', $file_name) 

为OS手柄的等价物。这完全是多余的,因为Perl已经知道它是一个标量句柄而不是操作系统句柄。