Включение хэшей в хэши в Perl

Доброго времени суток,

Я сейчас работаю над созданием больших хешей из множества меньших хешей. Предположим, что каждый из этих меньших хешей определен в файле, а затем может быть включен в больший хеш.

Например, давайте посмотрим на несколько маленьких хэшей

Файл 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, строке 6 или Нечетное количество элементов в анонимном хэше в строке (eval 11) 5, строка 6 . Я не уверен, как найти (eval 11) строку 4–3, строку 6. Будем очень признательны за любые предложения по использованию отладчиков Perl или любые указания на то, где я могу ошибиться.

Спасибо!

6
задан Axeman 24 January 2011 в 23:50
поделиться