生病了几个星期后,我试图回到我的脚本项目,似乎遇到了一个新手速度碰撞.
我正在尝试组装一个脚本来覆盖文件,然后使用正则表达式从文件中处理参数,并根据找到的参数构建哈希.
但我遇到的问题是哈希没有按照我想要的方式构建,或者至少我认为它不是.
这是我正在制作的小脚本.
#!/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);
Run Code Online (Sandbox Code Playgroud)
对于那些希望在这里执行脚本的人是我正在构建的配置文件
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
Run Code Online (Sandbox Code Playgroud)
只需将其保存到调用的文件中,settings.cfg除非您想要更改脚本中的参数.
无论如何这是我得到的输出Data::Dumper.
$VAR1 = 'server01';
$VAR2 = {
'host' => 'esxi01'
};
Run Code Online (Sandbox Code Playgroud)
我要做的是创建server01哈希的根密钥和host子密钥,因为我还将有用户,密码和端口号的子密钥.
我一直在咀嚼这个半小时(部分分心)试图弄清楚它为什么不起作用,任何帮助都会得到最多的赞赏.
你想要这样的输出吗?
$VAR1 = {
'server01' => {
'host' => 'esxi01'
}
};
Run Code Online (Sandbox Code Playgroud)
如果是这样,你的%config就可以了.你的问题是你传递一个哈希(它被解释为一个列表的数组)而不是hashref Dumper.试试吧Dumper(\%config).