Почему этот хэш не отображается правильно? - PullRequest
3 голосов
/ 10 марта 2011

после нескольких недель болезни я пытаюсь вернуться в свои проекты сценариев и, похоже, сталкиваюсь с новичком в скорости.

Я пытаюсь собрать сценарий для отбраковки файла, а затем обработать параметры из файла с помощью регулярных выражений и создать хеш из найденных параметров.

Но проблема, с которой я сталкиваюсь, заключается в том, что хеш создается не так, как я хочу, или, по крайней мере, я думаю, что это не так.

Вот крошечный скрипт, над которым я работаю.

#!/usr/bin/perl
use strict;
use warnings;
use File::Slurp;
use Data::Dumper;

my %config;

my $text = read_file("./config/settings.cfg");

if ($text =~ /^esxi\.host\s+=\s+(?<host>.+)/xm) {
    $config{host} = "$+{host}";
}

print Dumper (%config);

Для желающих выполнить скрипт здесь находится файл конфигурации, который я создаю

Connection Options:
######################################################
esxi.host = server01
esxi.port = 22
esxi.username = root
esxi.password = password
######################################################

Backup Options:
#########################
Compression Options:
0 = none
1 = tar
2 = gzip
3 = tar+gzip
#########################
backup.compression = 0

Просто сохраните его в файле с именем settings.cfg, если вы не хотите изменять параметр в скрипте.

Во всяком случае, это вывод, который я получаю от Data::Dumper.

$VAR1 = 'server01';
$VAR2 = {
          'host' => 'esxi01'
        };

Я пытаюсь сделать server01 корневым ключом хэша и host подключом, потому что у меня также будут подразделы для пользователя, пароля и номера порта.

Я жевал это около получаса (частично отвлекшись), пытаясь выяснить, почему это не работает, любая помощь будет наиболее ценной.

1 Ответ

7 голосов
/ 10 марта 2011

Вы хотите вывод, как это?

$VAR1 = {
      'server01' => {
                      'host' => 'esxi01'
                    }
    };

Если это так, ваш% config в порядке. Ваша проблема в том, что вы передаете хеш (который интерпретируется как массив список), а не хэш-ссылку на Dumper. Попробуйте Dumper(\%config) вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...