我正在使用IO::Select
的can_read
方法來選擇準備好在簡單的perl腳本中讀取的文件句柄。Perl如何知道從IO :: Select :: - > can_read中的句柄中讀取多少個字節?
但是,文件句柄上的<...>
運算符不需要傳遞給它的長度。
是IO::Select
到達文件句柄內部以設置「合適的長度」......或究竟發生了什麼?
#!/usr/bin/env perl
use IO::Select;
use strict;
use warnings;
my @handles = IO::Select->new(\*STDIN)->can_read(3);
@handles == 1 or die;
my $handle = $handles[0];
print ("I read " . <$handle> . "\n");
例如,以下腳本立即打印"a\n"
,然後在3秒鐘後退出。
% sh -c 'echo a; sleep 5; echo b' | perl reader.pl
I read a
Exit 141
然後由於一些奇怪的原因而退出異常......不知道退出狀態是在哪裏設置的。
編輯:明顯的異常退出似乎是tcsh中的錯誤。
哪個perl版本?在5.20上等待5秒鐘並正常結束。 –
perl 5.24在OS X上...我懷疑退出狀態是由tcsh錯誤地報告的:/ –
can_read使用select()https://metacpan.org/source/GBARR/IO-1.25/lib/IO/Select。 pm#L99 –