Perl не проинициализированная переменная
Файл состоит из строк вида
1700 06 00 04 00 .0 52.00 117.00 14.0
или
2000 11 20 0 37 48.7 56.19 114.46 9.3
(несколько сотен строк). Программа должна выбирать строки, где последняя цифра от 13 до 15. Вот код:
#!/usr/bin/perl -w
use Getopt::Std;
$str="";
open $file, '<', 'cat1' or die "Невозможно открыть файл: $!\n";
while(<$file>)
{
($j, $m, $d, $h, $mn, $s, $la, $fi, $k)=<$file>;
if (($k>=13) && ($k<=15))
{
$str="$str$j $m $d $h $mn $s $la $fi $k";
}
}
close $file;
open $fh, '>', 'cat11';
print $fh "$str";
close $fh;
Но при попытки выполнить программу выходит сообщение о том, что переменная k не проинициализирована, и в файл ничего не записывается. Что здесь не так я делаю? И правильно ли записано логическое И в условном операторе? Заранее спасибо.
Вот рабочая версия
#!/usr/bin/perl
use warnings;
use strict;
open my $out, '>', 'cat11';
open my $file, '<', 'cat1' or die "Невозможно открыть файл: $!\n";
while(<$file>) {
my $last = sprintf '%f', +(split ' ', $_)[-1];
print $out $_ if($last >= 13 && $last <= 15);
}
close $file;
close $out;
Логическое И правильное.
Попробуйте проинициализировать переменные в цикле нулями
Это что за язык такой?