perl加入数组引用

Sas*_*wat 7 perl join arrayref

我是perl的新手.

我试图使用连接与数组引用,但它不起作用.

这是我的代码.

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

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

print $output;
Run Code Online (Sandbox Code Playgroud)

这是印刷

table
Run Code Online (Sandbox Code Playgroud)

代替

home,chair,table
Run Code Online (Sandbox Code Playgroud)

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

amo*_*mon 18

在Perl中,parens不会创建数组.他们只挑选优先权.hashref

{ 'items' => ('home', 'chair', 'table') }
Run Code Online (Sandbox Code Playgroud)

是相同的

{ 'items' => 'home', 'chair' => 'table' }
Run Code Online (Sandbox Code Playgroud)

如果要将数组放入散列中,则需要使用可以使用[ ... ]以下内容创建的arrayref :

my $hash = { 'items' => ['home', 'chair', 'table'] }
Run Code Online (Sandbox Code Playgroud)

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

ARRAY(0x1234567)
Run Code Online (Sandbox Code Playgroud)

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

print join(',', @{ $hash->{items} }), "\n";
Run Code Online (Sandbox Code Playgroud)

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