为什么我得到ARRAY(0x8470d6c)而不是我的YAML配置中的列表?

Fir*_*ras 1 perl yaml

我有这个YAML文件:

name: Firas
dirs: [/bin/, /home/phiras/]
Run Code Online (Sandbox Code Playgroud)

我在perl中使用YAML :: Syck来解析这个文件,我在访问dirs项时遇到问题.我的代码是:

#!/usr/local/bin/perl

use strict;
use warnings;
use YAML::Syck;
use ConfigLoader;
use Data::Dumper;

my $conf = LoadFile("myconf.yml") || die("Error: Open config file \n");

print $conf->{name}, "\n";

my @dirs = $conf->{dirs};

print Dumper @dirs;
foreach(@dirs){
        print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)

输出是:

    Firas
    $VAR1 = [
              '/bin/',
              '/home/phiras/'
            ];
    ARRAY(0x8470d6c)

正如您所看到的,循环正在打印一个项目,它被视为数组.我是以正确的方式做到的吗?

zou*_*oul 15

我认为问题是它$conf->{dirs}是一个arrayref,而不是一个数组.试试这个:

my @dirs = @{$conf->{dirs}};
Run Code Online (Sandbox Code Playgroud)

  • @Firas - 如果有人给你答案,你应该点击问题旁边的复选标记来接受他们的答案是正确的. (2认同)