perl:内存文件句柄上的sysread?

时间:2011-08-22 00:49:57

标签: perl

遗憾的是,这不起作用:

my $input = "this is a test";
open(my $fh, "<", \$input);
my $n = sysread($fh, $buf, 4);  # want $n == 4, $buf eq 'this'

sysread替换read按预期工作。

这是预期的吗?可以上班吗?我错过了什么吗?

2 个答案:

答案 0 :(得分:5)

在sysread之后,变量$!包含“错误的文件描述符”?然后你可能遇到过bug 72428“sysread对文件句柄无法处理标量”(https://rt.perl.org/rt3/Public/Bug/Display.html?id=72428

答案 1 :(得分:1)

然而,这是有效的,我不太清楚为什么或者你真的想要这样做。

my $input = "this is a test";
open(my $fh,'-|',"echo $a");  # open a pipe instead and echo the string
my $n = sysread($fh,$buf,4) or warn $!; 

请注意,失败的sysread会设置$!,以便您检查错误。