For*_*ann 2 arrays perl reference
在C#中,可以创建对引用类型的引用:
SomeObject origObj = new SomeObject();
SomeObject objRef = origObj;
Run Code Online (Sandbox Code Playgroud)
origObj和objRef都指向同一个对象.
现在,在perl中:
my @arr = (1,2,3);
method(\@arr);
sub method
{
my $arr_ref = shift;
foreach my $element (@{$arr_ref})
{
#...
}
}
Run Code Online (Sandbox Code Playgroud)
我希望在方法中使用"@myArr",而不是每次都要进行转换:"@ {$ arr_ref}" - 并且在不创建数组副本的情况下执行此操作(因为我的"@myArr = @ {$ arr_ref}"将创建一个副本).
总结一下:如何在不创建副本的情况下获得"@myArr = @ {arr_ref}"?
如果你很高兴@myArr成为一个包变量(our)而不是一个词法变量(my),你可以这样做:
our @myArr;
local *myArr = $arr_ref;
Run Code Online (Sandbox Code Playgroud)
这将使@myArr像$ arr_ref所指向的数组的别名一样.
如果你需要@myArr词法,那么你可以使用Data :: Alias:
use Data::Alias;
alias(my @myArr = @$arr_ref);
Run Code Online (Sandbox Code Playgroud)