Я пытаюсь вывести «не в порядке», если дата, указанная во входном файле, превышает один день по сравнению с «сегодняшним днем», используя Perl версия 5.8.8.
Инициализация с помощью «./ code. sh
07/02/2020 08/02/2020
Когда я повторяю sh приведенный ниже код, чтобы использовать" сегодняшнюю дату "в качестве переменная, и только одна дата во входном файле, я получаю следующую ошибку:
Use of uninitialized value in concatenation (.) or string at code.sh line 27, <> line 1
Рабочий код (с двумя датами во входном файле):
#!/usr/bin/perl
use strict;
use warnings;
use Time::Piece;
#my $date = localtime->strftime('%d/%m/%Y');
#print "$date";
my $format = '%d/%m/%Y';
while (<>) {
chomp;
my ($str1, $str2) = split;
# my ($date, $str2) = split;
# my $dt1 = Time::Piece->strptime($date, $format);
my $dt1 = Time::Piece->strptime($str1, $format);
my $dt2 = Time::Piece->strptime($str2, $format);
# print "$date / $str2 ";
print "$str1 / $str2 ";
if ($dt2->julian_day - $dt1->julian_day ==1) {
print "ok\n";
} else {
print "not ok\n";
}
}
Сломанный код ( с одной датой во входном файле):
#!/usr/bin/perl
use strict;
use warnings;
use Time::Piece;
my $date = localtime->strftime('%d/%m/%Y');
print "$date";
my $format = '%d/%m/%Y';
while (<>) {
chomp;
# my ($str1, $str2) = split;
my ($date, $str2) = split;
my $dt1 = Time::Piece->strptime($date, $format);
# my $dt1 = Time::Piece->strptime($str1, $format);
my $dt2 = Time::Piece->strptime($str2, $format);
print "$date / $str2 ";
# print "$str1 / $str2 ";
if ($dt2->julian_day - $dt1->julian_day ==1) {
print "ok\n";
} else {
print "not ok\n";
}
}
Не совсем уверен, что я делаю неправильно ...
Любая помощь приветствуется