如何从perl中的默认变量中减去

时间:2012-02-26 21:21:11

标签: perl

这可能是非常基本的东西,但我在其他地方找不到答案:

似乎在一个数组的交互中我可以添加到一个默认变量来定位数组中的其他项目,但我不能从中减去它,如下所示:

foreach (0..$#array) {
    if ( $array[$_] =~ m/PATTERN/ ) {
        $array[$_] = $TRING1;
        $array[$_+1] = $TRING2;
        $array[$_-1] = $TRING3;
    };
};

它只是没有为前一个项目分配任何内容,但保留原样(我从未得到< 0)。

我可能在这里遗漏了一些小事?

1 个答案:

答案 0 :(得分:0)

您似乎在迭代它们并检查模式的同时更改数组中的元素。如果您在其中添加打印声明,则会看到:

my @array = qw/PATTERN PATTERN PATTERN/;
my ($str1,$str2,$str3) = qw/A B C/;
foreach (0..$#array) {
    print qq|Index is $_, pattern is $array[$_]\n|;
    if ( $array[$_] =~ m/PATTERN/ ) {
        $array[$_]      = $str1;
        $array[$_+1]    = $str2;
        $array[$_-1]    = $str3;
    };
};

Prints:
Index is 0, pattern is PATTERN
Index is 1, pattern is B
Index is 2, pattern is C

创建一个新数组会有所帮助,但就我所见,它仍然是一个不可预测的构造。