Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
open(STDOUT,';>;:scalar';,\$STDOUT)在Perl中是如何工作的?_Perl - Fatal编程技术网

open(STDOUT,';>;:scalar';,\$STDOUT)在Perl中是如何工作的?

open(STDOUT,';>;:scalar';,\$STDOUT)在Perl中是如何工作的?,perl,Perl,什么是标量 以前从未见过这种代码。特定的“>:THING”语法告诉Perl IO系统使用THING指定的层。请看一下“层”的名称。常见的图层是“原始”和“utf8” 在本例中,这允许您将$stdout用作内存中的文件,该文件最终应包含发送到stdout的任何内容。更一般地说,该语法允许您打开内存中的文件,然后将文件句柄发送给通常写入文件的其他函数,以便您可以收集它们的输出(或提供它们的输入) 您还可以通过打开一个“文件”来实现相同的结果,该文件是对标量的引用: open my $fh, ">

什么是标量

以前从未见过这种代码。

特定的“>:THING”语法告诉Perl IO系统使用THING指定的层。请看一下“层”的名称。常见的图层是“原始”和“utf8”

在本例中,这允许您将$stdout用作内存中的文件,该文件最终应包含发送到stdout的任何内容。更一般地说,该语法允许您打开内存中的文件,然后将文件句柄发送给通常写入文件的其他函数,以便您可以收集它们的输出(或提供它们的输入)

您还可以通过打开一个“文件”来实现相同的结果,该文件是对标量的引用:

open my $fh, ">:scalar",  \$scalar or die;
open my $fh, ">",  \$scalar or die;
它由PerlIO提供,由实现,尽管您不必“使用”模块来访问功能。

Perl使用。在链的底部,可以找到一个处理访问媒体的层
scalar
是IO系统层,处理从标量(而不是文件)读取和写入的操作。说

open(my $fh, '>:scalar', \$scalar)
对于标量句柄,相当于

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

用于操作系统句柄。它是完全冗余的,因为Perl已经知道它是标量句柄而不是操作系统句柄。

我在一开始就添加了这一点。