Perl在原始模式下的内存内容写入

时间:2013-07-31 05:06:56

标签: perl file-io io

我正在使用perl 5.10.0并尝试在原始模式中的内存缓冲区中编写内容。但它不起作用。在下面的代码片段中,我尝试比较三种情况之间的结果

my ($s1, $s2);
open RAWF, '>:raw', \$s1;     #<-------  Opening in memory reference in raw mode
print RAWF 'Hello world in RAW MODE', "\n";

open FH, '>:raw', 'testfile.bin'; #<-------  Opening a file in raw mode
print FH 'Hello world in FILE', "\n";

open NORF, '>', \$s2;   #<-------  Opening in memory reference in normal mode
print NORF 'Hello world in NORMAL MODE', "\n";   

print $s1;    #<------ Doesnt print anything
print $s2;    #<------ Prints as expected

但是,如果我使用perl 5.14。*​​那么它可以工作。这是perl 5.10.1的限制吗?或者它应该以其他方式工作?

1 个答案:

答案 0 :(得分:3)

显然这是在Perl 5.12时间范围内修复的错误。请参阅perlbug #80764 - 即使初始报告/修补程序未明确提及您的问题,此问题也会出现in the discussion on the bug,并且会进入这些修补程序。