遗憾的是,这不起作用:
my $input = "this is a test";
open(my $fh, "<", \$input);
my $n = sysread($fh, $buf, 4); # want $n == 4, $buf eq 'this'
用sysread
替换read
按预期工作。
这是预期的吗?可以上班吗?我错过了什么吗?
答案 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会设置$!
,以便您检查错误。