将数组推入Perl中的数组

6
如何将 @myarr 推入 $menu 中(请参见下文)
my @myarr = (
                [ "itemone", "itemoneb", "itemonec" ],
                [ "itemtwo", "itemtwob", "itemtwoc" ],
                [ "itemthree", "itemthewwb", "itemthreec" ],
                [ "itemfour", "itemfourb", "itemfourc" ]
               );

$menu = [
         "List",
         ["itemone", \&ds2],
         ["itemtwo", \&ds2],
         ["itemthree", \&ds2],
         ["itemfour", \&ds2],
         [ "Do Something (second)", \&ds2 ]
     ];

你尝试了什么,结果如何?在阅读了perlreftut之后,这应该不难。 :) - memowe
你是想将“itemoneb”和“itemonec”推入持有“itemone”的现有数组引用中吗?而“&ds2”是什么? - plusplus
3
为什么该问题被关闭并标记为“不是一个真正的问题”?问题表述得很清楚明白,没有歧义。 - Owl
2个回答

8
这取决于你想要做什么。
你可以直接推送数组:
push (@$menu, @myarr);

#results in:

[
     "List",
     ["itemone", \&ds2],
     ["itemtwo", \&ds2],
     ["itemthree", \&ds2],
     ["itemfour", \&ds2],
     [ "Do Something (second)", \&ds2 ],
     [ "itemone", "itemoneb", "itemonec" ],
     [ "itemtwo", "itemtwob", "itemtwoc" ],
     [ "itemthree", "itemthewwb", "itemthreec" ],
     [ "itemfour", "itemfourb", "itemfourc" ]
];

这会导致myarr元素被推送到menu中,或者将引用推送:
push (@$menu, \@myarr);

#results in:

[
     "List",
     ["itemone", \&ds2],
     ["itemtwo", \&ds2],
     ["itemthree", \&ds2],
     ["itemfour", \&ds2],
     [ "Do Something (second)", \&ds2 ],
     [
        [ "itemone", "itemoneb", "itemonec" ],
        [ "itemtwo", "itemtwob", "itemtwoc" ],
        [ "itemthree", "itemthewwb", "itemthreec" ],
        [ "itemfour", "itemfourb", "itemfourc" ],
     ],
];

实际上,它推动数组(嵌套数组)。


5
你只需要推送它:
 use Data::Dumper;
 push (@$menu, @myarr);
 print Dumper($menu), "\n";

7
这会将 @myarr 数组中的元素推入 @$menu 中,如果要推入一个数组,请推入它的引用,即 push $@menu,\@myarr - tuxuday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接