您将如何引用数组切片,以便在修改切片引用的元素时,原始数组也被修改?
由于 @_
,以下代码有效别名魔术,但对我来说似乎有点黑客:
my @a = 1 .. 10;
my $b = sub{\@_}->(@a[2..7]);
@$b[0, -1] = qw/ < > /;
print "@a\n";
# 1 2 < 4 5 6 7 > 9 10
有人有更好/更快的方法吗?
编辑:上面的代码示例只是为了说明@a 和 $b 之间所需的关系,它绝不反射(reflect)此功能在生产代码中的使用方式。
最佳答案
Data::Alias似乎能够做你想做的事:
#!/usr/bin/perl
use strict; use warnings;
use Data::Alias;
my @x = 1 .. 10;
print "@x\n";
my $y = alias [ @x[2 ..7] ];
@$y[0, -1] = qw/ < > /;
print "@x\n";
输出:
1 2 3 4 5 6 7 8 9 10
1 2 < 4 5 6 7 > 9 10
关于perl - 如何引用 Perl 中的数组切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1817373/