perl - 如何引用 Perl 中的数组切片?

标签 perl arrays syntax reference slice

您将如何引用数组切片,以便在修改切片引用的元素时,原始数组也被修改?

由于 @_,以下代码有效别名魔术,但对我来说似乎有点黑客:

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/

相关文章:

javascript - 如何从数组中保存在某个位置的 JSON 行访问属性?

java - 声明 int[] 数组而不定义大小?

java - 在 java 中对 ArrayList<Integer> 的数组进行排序

java - 在 JAVA 变量名中使用 UTF-8 字符

javascript - for 循环的第一个语句中声明的变量是否有作用域或经过特殊处理?

regex - 在 perl 中使用 foreach 代替 map 和 grep

perl - 如何用perl修改crontab?

perl - ?模式?运算符不适用于 Perl 中的“仅匹配一次”

javascript - 使用 PEG.js 解析缩进级别

c - C 中系统调用的文件句柄问题