1

我正在努力了解这个 perl 模块是如何工作的,它被称为 XML::Smart。除了与模块不太相关的一件事外,大部分内容都很容易弄清楚。

我想要做的是将我的脚本中的哈希复制到 XML::Smart 模块中进行处理。在对它进行了一点“禁止”之后,我设法让它做我想做的事。问题是我不知道我到底做了什么。如果有人可以提供一个线索,说明为什么这会起作用,这在英语中意味着什么,那就太好了。

当我在滚动我自己的模块时,我看到了类似的东西,这意味着它与创建一个类有关,不确定它是否被称为或者它有类似的东西。

这是我的代码;

#!/usr/bin/perl
use strict;
use warnings;
use XML::Smart;

my $xml_obj = XML::Smart->new();

my %config_file = (
    "server01" => {
        "connection" => {
            "address" => "10.0.0.4",
            "port" => "22",
        }, "authentication" => {
            "username" => "admin",
            "password" => "password",
        },
    },
);

$xml_obj->{config} = {%config_file};
4

2 回答 2

3

它使用旧哈希的(浅)副本创建对新哈希的引用。

{}是一个哈希引用。

{ "foo", "bar", "x", "y" }定义一个带有键和值列表的 hashref。

如果你在里面放一个散列,{}它是在列表上下文中,所以会变成一个键和值的列表。

于 2012-06-12T19:15:31.940 回答
-1

如果您尝试将 %config_file 分配给 $xml_obj->{config} 您将需要执行类似哈希切片的操作。

@{ $xml_obj->{config} }{ 键 %config_file } = 值 %config_file;

于 2012-06-12T19:18:57.137 回答