我有一個多維散列,其中包含打開的文件句柄SEEK_END
,目的是始終讀取最新的行,而不需要太多的I/O(我會用tail
)。(空?)readline的返回沒有被控制結構捕獲
我現在正通過for
循環檢查所有這些句柄,並在其上調用readline
。
它看起來像這樣:
for $outer (keys %config) {
my $line = readline($config{$outer}{"filehandle"});
if (not defined $line || $line eq ''){
next;
}
else{
print "\nLine: -->".$line."<--\n";
$line =~ m/(:)(\d?\.?\d\d?\d?\d?\d?)/;
$wert = $2;
}
}
如果新內容被寫入到這些文件,我的腳本讀取它,只是按計劃的行爲。
的問題是,readline
通常會返回任何結果,因爲目前還沒有在文件的結尾,但是我if
似乎並沒有確定的readline
爲undef
爲空空回 - 它只是打印什麼,這是對的,因爲這個字符串中沒有任何內容,但我不希望它被處理。
聖潔鱷梨醬。非常感謝你。似乎最簡單的答案是最好的。我嘗試了很多奇怪的東西,從來沒有把注意力放在'||'操作符上。我愚蠢。現在工作正常。 – David
用'或'代替它確實很好,但我對於評估順序進行了糾正 - 請參閱[Borodin](http://stackoverflow.com/users/622310/borodin)的答案。請參閱['perlop中的運算符優先級](http://perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity) – zdim
另請參見[Perl的「not」運算符未按預期方式與定義的()功能](https://stackoverflow.com/questions/12958603/perls-not-operator-not-working-as-expected-with-the-defined-function) –