Perl DBM :: Deep - 在hashrefs的arrayref中添加/删除

时间:2018-03-08 14:51:37

标签: perl

我一直在使用DBM :: Deep,到目前为止,它很容易读取和更新数据库中的键,但是当涉及到添加或删除实体时,它会变得有点复杂,我看不出如何它可以做到。

我使用XML :: Hash导入了一个XML文件,然后在DBM :: Deep对象上复制。所以结果有点复杂......当然,目标是能够轻松地重新创建XML文件。

所以这段代码:

use DBM::Deep;
use List::Util qw(first);
use Data::Dumper;

my $db = DBM::Deep->new('foo.db');
my $devices = $db->{foo}->{devices}->{device};

(my $match) = grep { $_->{hostname} eq 'myfoo' } @$devices;

print Dumper ($match);
print Dumper($devices);

为第一次打印提供以下输出:

$VAR1 = bless( {
             'enable' => '0',
             'hostname' => 'myfoo',
             'auth' => 'myauth',
             'ip' => 'myip',
             'protocol' => 'ssh'
           }, 'DBM::Deep::Hash' );

第二张照片显示:

$VAR1 = bless( [
             bless( {
                      'enable' => '0',
                      'hostname' => 'myfoo',
                      'auth' => 'myauth',
                      'ip' => 'myip',
                      'protocol' => 'ssh'
                    }, 'DBM::Deep::Hash' ),
             bless( {
                      'ip' => 'myotherip',
                      'hostname' => 'myotherfoo',
                      'auth' => 'myauth',
                      'protocol' => 'telnet'
                    }, 'DBM::Deep::Hash' ),

等等。

有人可以帮助我了解如何在此数据结构中创建和删除?

0 个答案:

没有答案