У меня есть многомерный хеш, содержащий открытые дескрипторы файлов на SEEK_END
с целью всегда читать последнюю строку, не получая много ввода-вывода (что бы я получил с tail
).(пусто?) Return 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
как пустые - это просто ничего не печатает, который был бы прав, потому что в этой строке ничего нет, но я не хочу, чтобы он обрабатывался вообще.
Священный guacamole. Большое спасибо. Похоже, самый простой ответ - лучший. Я пробовал так много странных вещей и никогда не смотрел на '' 'Operator. Глупый я прав. Сейчас работает отлично. – David
Замена его на 'или' действительно прекрасна, но я стою исправлен относительно порядка оценок - см. Ответ [Бородин] (http://stackoverflow.com/users/622310/borodin). См. ['Приоритет оператора в perlop'] (http://perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity) – zdim
См. Также [Оператор« не »Perl не работает должным образом с определенным() функция] (https://stackoverflow.com/questions/12958603/perls-not-operator-not-working-as-expected-with-the-defined-function) –