Почему мой Perl open () завершается с ошибкой «Неудачное открытие по имени файла, содержащего символ новой строки»? - PullRequest
3 голосов
/ 25 января 2010

Я попытался поместить ${date[0]} в мой каталог, что эквивалентно 01252010, но @hits не напечатано. Как мне удалось открыть каталог, чтобы получить желаемый результат? Спасибо.

ОШИБКА: Неудачное открытие по имени файла, содержащему перевод строки в ./total.pl строка 11, строка 1.

#!/opt/perl/bin/perl -w

use strict;

open(FH,"/home/daily/scripts/sms_hourly_stats/date.txt");
my @date = <FH>;
print $date[0];

my $path = "/home/daily/output/sms_hourly_stats/${date[0]}/TOTAL.txt";
open(FILE,"$path") or die "Unable to open $path: $!";
my @hits = <FILE>;
print @hits;

close FH;
close FILE;

Ответы [ 3 ]

5 голосов
/ 25 января 2010

Вам необходимо удалить символ окончания строки. Используйте chomp:

chomp(my @date = <FH>);
0 голосов
/ 25 января 2010
#!/opt/perl/bin/perl -w

use strict;

open(FH,"/home/daily/scripts/sms_hourly_stats/date.txt");
my @date = <FH>;
my $dir;
print ${date[0]};
chomp($dir = ${date[0]});


my $path = "/home/daily/output/sms_hourly_stats/$dir/TOTAL.txt";
open(FILE,"$path") or die "Unable to open $path: $!";
my @hits = <FILE>;
print @hits;

close FH;
close FILE;
0 голосов
/ 25 января 2010
  1. Используйте chomp для полученных значений, как предложил Иван
  2. Где вы нашли синтаксис $ {date [0]}?используйте $ date [0].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...