В настоящее время я пишу небольшой скрипт на Perl, чтобы действовать как cronjob.
Задача подпрограммы состоит в том, чтобы проверить, является ли файл, в который я пишу, действительным файлом json или нет, а затем продолжить работу на основе возврата этой подпрограммы и вывода другой подпрограммы.
Несмотря на то, что я возвращаю несколько значений в списке, а затем присваиваю результат функции списку переменных, которые я хочу определить, он работает только с последним значением из списка.
Я мог бы просто инкапсулировать значения в массиве, но я хочу знать, почему метод, который я попробовал, не работает так, как я ожидал.
(извините за плохое форматирование ...)
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
use Data::Dumper;
sub is_valid_json {
my $readJson = do {
open(my $readJson, "+<", "../data_out.json")
or die("Can't open \$filename\": $!\n");
local $/;
<$readJson>
};
my $json = JSON->new;
eval {
my $result = $json->decode($readJson);
my $JsonValidationStatus = 1;
return($JsonValidationStatus,$readJson );
} or do {
warn "Failed to decode_json result";
print "mission failled";
my $JsonValidationStatus = 0;
return($JsonValidationStatus, $readJson);
};
}
my ($JsonValidationStatus, $readJson) = is_valid_json();
print "One:". Dumper "$JsonValidationStatus\n";
print "Two:" . Dumper "$readJson\n";
print "\n \n \n \n";
пс. извините забыл предоставить сообщение об ошибке:
Использование неинициализированного значения $ readJson в конкатенации (.)