Доброго времени суток,
Я сейчас работаю над созданием больших хешей из множества меньших хешей. Предположим, что каждый из этих меньших хешей определен в файле, а затем может быть включен в больший хеш.
Например, давайте посмотрим на несколько маленьких хэшей
Файл personcontact.pl
:
return {
\'firstname\' => {
\'__type\' => \'String\'
},
\'lastname\' => {
\'__type\' => \'String\'
},
%{include("/tmp/address.pl")}
}
Файл address.pl
:
return {
\'address\' => {
\'street\' => {
\'__type\' => \'String\'
},
\'unit\' => {
\'__type\' => \'String\',
\'__validation_function\' => {
\'is_a_number\' => \'\'
},
\'__schema_constraints\' => {
\'is_not_null\' => \'\'
}
},
\'suburb\' => {
\'__type\' => \'String\'
},
\'__type\' => \'ARRAY\'
}
}
И у меня их довольно много ...
Я пытаюсь воссоздать хэш с помощью подпрограммы include
, которая выглядит так:
sub include {
my ($filename) = @_;
my $file;
open(my $fh, "<", $filename) or die ("FILEOPEN: $!");
while(my $line = <$fh>) { $file .= $line; }
my $result = eval $file;
die("EVAL: $@") if $@;
close($fh) or die("FILECLOSE: $!");
return $result;
}
Я знаю, что, должно быть, делаю что-то не так, но я не уверен что. Я продолжаю получать ошибки вроде Бесполезное использование переменной в пустом контексте в (eval 11) строке 4,
или Нечетное количество элементов в анонимном хэше в строке (eval 11) 5,
. Я не уверен, как найти (eval 11) строку 4–3, строку 6. Будем очень признательны за любые предложения по использованию отладчиков Perl или любые указания на то, где я могу ошибиться.
Спасибо!