У меня в основном следующий Perl я работаю с:Perl разделить на пустой файл
open I,$coupon_file or die "Error: File $coupon_file will not Open: $! \n";
while (<I>) {
$lctr++;
chomp;
my @line = split/,/;
if ([email protected]) {
print E "Error: $coupon_file is empty!\n\n";
$processFile = 0; last;
}
}
У меня возникли проблемы определения того, что раскол /,/функция возвращается, если пустой файл передается на него , Блок кода if (! @line) никогда не выполняется. Если я изменю это значение, то будет
if (@line)
, чем выполняется блок кода. Я прочитал информацию о функции разделения perl по адресу http://perldoc.perl.org/functions/split.html и обсуждении here о тестировании пустого массива, но не уверен, что здесь происходит.
Я новичок в Perl, поэтому, вероятно, отсутствует что-то прямое здесь.
Таким образом, используя только if (@line) проверяет, что массив определен или существует, и NOT th e размер массива? – Casey
его perl используя контекст, чтобы определить, что он собирается делать. 'if (@line)' совпадает с 'if (scalar (@line))', но с '' @ line', вы не гарантируете, что его оценивают в контексте «скалярного». – dlamotte
№ 'if (@line)' то же самое, что и 'if (scalar (@line))', который оценивается как true, когда в списке есть элементы. – jamessan