7

我是 perl 的新手。

我正在尝试将 join 与数组引用一起使用,但它不起作用。

这是我的代码。

my $arr = {
     'items' => ('home', 'chair', 'table')
};

my $output = join(',', $arr->{'items'});

print $output;

正在打印

table

代替

home,chair,table

有人可以在这方面帮助我吗?

4

1 回答 1

19

在 Perl 中,括号不创建数组。他们只排序优先级。哈希引用

{ 'items' => ('home', 'chair', 'table') }

是相同的

{ 'items' => 'home', 'chair' => 'table' }

如果要将数组放入哈希中,则需要使用 arrayref,可以使用以下命令创建[ ... ]

my $hash = { 'items' => ['home', 'chair', 'table'] }

现在如果你运行你的代码,你会得到类似的东西

ARRAY(0x1234567)

作为输出。这是打印参考的方式。我们需要取消引用它才能加入元素。我们可以使用@{ ... }数组取消引用运算符来做到这一点。然后:

print join(',', @{ $hash->{items} }), "\n";

要了解有关 Perl 中的引用和复杂数据结构的更多信息,请阅读

于 2013-09-18T11:14:54.960 回答