Ваша основная проблема в том, что Load
ожидает строку, содержащую YAML, а не имя файла. Вы хотели LoadFile
вместо этого (который не экспортируется по умолчанию). Кроме того, вы должны использовать YAML :: XS вместо YAML , если это возможно, поскольку это лучшая реализация. (Но YAML должно быть достаточно для простого конфигурационного файла.)
Другая проблема в том, что LoadFile
вернет ссылку на хеш (ну, если ваш YAML выглядит как хеш, как у вас), а не список, который вы можете использовать для инициализации хеша.
Попробуйте это:
use strict;
use warnings;
use YAML::XS qw(LoadFile);
my $settings = LoadFile('test.yaml');
print "The image width is ", $settings->{image_width};
(Вы можете удалить ::XS
, если не хотите (или не можете) установить YAML :: XS. Программа будет работать без других изменений.)