G'day,
Почему я получаю следующие две ошибки из фрагмента скрипта ниже?
Аргумент "www4.mh.xxxx.co.uk.logstatsto20090610.gz" не является числовым в делении (/) в строке 56
Аргумент "/logs/xxxx/200906/mcs0.telhc/borg2" не является числовым в делении (/) в строке 56
Переменные $ dir и $ log являются строками, а конкатенация двух строк вместе с косой чертой в середине также заключена в кавычки.
foreach my $dir (@log_dirs) {
foreach my $log (@log_list) {
line 56: if ( -s "$dir/$log" ) {
push(@logs, $dir/$log);
}
}
}
Редактировать: Строка 56, безусловно, является оператором if. Тем не менее, Пол, вы правы, решение этой проблемы заключено в кавычки в строке 57 . Благодаря.
Редактировать: Строка 56, сообщающая о версии Perl, равна
stats@fs1:/var/tmp/robertw> /usr/local/perl/bin/perl -v
This is perl, v5.6.1 built for sun4-solaris
Copyright 1987-2001, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.
stats@fs1:/var/tmp/robertw>
Редактировать: Несмотря на использование метода интерполированных строк в Perl, учитывая, что переменные сами являются строками, и я пытаюсь объединить их вместе с символом косой черты, не является ли конкатенация строк с чистым результатом?
ура