gpt4 book ai didi

perl - 为什么这个哈希没有正确显示?

转载 作者:行者123 更新时间:2023-12-05 01:02:06 25 4
gpt4 key购买 nike

在生病几周后,我正试图回到我的脚本项目中,但似乎遇到了新手减速带。

我正在尝试组装一个脚本来提取文件,然后使用正则表达式处理文件中的参数,并根据找到的参数构建哈希。

但我遇到的问题是哈希没有按照我想要的方式构建,或者至少我认为不是。

这是我正在处理的小脚本。

#!/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 成为散列的根 key ,让 host 成为子 key ,因为我还将拥有用户、密码和端口号的子 key .

我已经仔细研究了大约半小时(部分心烦意乱)试图找出它不起作用的原因,我们将不胜感激任何帮助。

最佳答案

你想要这样的输出吗?

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

如果是这样,您的 %config 就可以了。您的问题是您将散列(它被解释为 数组 列表)而不是散列引用传递给 Dumper。请尝试使用 Dumper(\%config)

关于perl - 为什么这个哈希没有正确显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5255634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com