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

标签 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 的限制吗?还是应该以其他方式完成?

最佳答案

显然这是一个在 Perl 5.12 时间框架内修复的错误。参见 perlbug #80764 - 即使最初的报告/修复没有具体提及您的问题,这个问题还是出现了 in the discussion on the bug并被卷入这些补丁中。

关于Perl 在原始模式下写入内存内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17962039/

相关文章:

c - 从C语言的文本文件中读取格式化数据

perl - 子程序定义中的冒号是什么意思?

xml - 如何在 Perl 中使用 XSD 验证 XML?

linux - 如何解决 amazon linux ami 中的 libpcre.so.1()(64bit) 依赖关系

java - java中使用stringtokenizer显示文件中选定的内容

file-io - 使用jmeter将提取的数据写入文件

Perl - 如何使用 Ping 检查服务器是否在线?

java - 如何使用Java查找文件属于哪个文件夹?

java - FilterInputStream 不执行

c# - 检查文件是否打开