我在Perl中有两个数据结构:
数组:
my @array2 = ( "1", "2", "3");
for $elem (@array2) {
print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)
给我以下输出:
1
2
3
Run Code Online (Sandbox Code Playgroud)
还有一个清单:
my @array = [ "1", "2", "3"];
for $elem (@array) {
print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)
给出以下输出:
ARRAY(0x9c90818)
Run Code Online (Sandbox Code Playgroud)
显然,我想在两种情况下迭代元素,但为什么第二种解决方案只给我这个数组的引用?
我在perl中有一个返回列表的函数.我的理解是,当foo()被分配给列表时,副本被制作:
sub foo() { return `ping 127.0.0.1` }
my @list = foo();
Run Code Online (Sandbox Code Playgroud)
这@list则需要被转移到另一个列表一样@oldlist = @list;,另一个副本.所以我想我可以从返回的列表中做出引用my $listref = \foo();,然后我可以分配该引用,但这不起作用.
我正在使用的函数运行一个返回一个相当大的列表的命令(ping命令仅用于示例目的),我经常调用它,所以我想尽可能减少副本.什么是处理这个问题的好方法?