perl配置和块

abh*_*ier 2 perl configuration

我试图在perl中使用配置文件 Config::Simple

#!/usr/bin/perl

use Config::Simple;
use Data::Dumper;
use Data::Dump qw(dump);

#$cfg = new Config::Simple('new.conf');

$cfg = new Config::Simple(syntax => 'ini');

$cfg->param("Dialer Onboard.user", "user1");
$cfg->param("Dialer Onboard.pass", "pass1");
$cfg->param("Dialer External.user", "user2");
$cfg->param("Dialer External.pass", "pass2");

$cfg->write("new.conf");
$cfg->read('new.conf');

$user = $cfg->param("Dialer Onboard.user");
print "----" . "$user";
Run Code Online (Sandbox Code Playgroud)

new.conf文件将是

[Dialer External]
pass=pass2
user=user2

[Dialer Onboard]
pass=pass1
user=user1
Run Code Online (Sandbox Code Playgroud)

对于部分或块的信息,我使用的功能get_block()是这样

my $config = Config::Simple->new("new.conf")->get_block("Dialer Onboard");
print Dumper $config;
Run Code Online (Sandbox Code Playgroud)

这将给我这样的输出

$VAR1 = {
    'pass' => 'pass1',
    'user' => 'user1'
};
Run Code Online (Sandbox Code Playgroud)

有没有办法获得所有块的名称?

现在我只获得了块的数量

my $config = Config::Simple->new("new.conf")->get_block();
print Dumper $config;
Run Code Online (Sandbox Code Playgroud)

输出将是

$VAR1 = 2;
Run Code Online (Sandbox Code Playgroud)

Aru*_*ngh 7

您正在使用get_block()标量上下文; 这就是你得到块数的原因.在列表上下文中使用它来获取块的名称.

试试这个:

my @config = Config::Simple->new("new.conf")->get_block();
print Dumper \@config;
Run Code Online (Sandbox Code Playgroud)

输出:

$VAR1 = [
          'Dialer Onboard',
          'Dialer External'
        ];
Run Code Online (Sandbox Code Playgroud)