Perl 的函数参数问题

正在学 Perl 有个问题向大家请教

sub f {
    shift @_;
    print "@_
";
    foreach (@_) {
        ++$_;
    }
    print "@_
";
}

my @x = (1, 2, 3, 4, 5, 6);
f(@x);
print "@x
";

输出是

2 3 4 5 6
3 4 5 6 7
1 3 4 5 6 7

函数参数作为引用,那为啥最后输出是 1 3 4 5 6 7,而不是 3 4 5 6 7

我的理解@_ 类似 C 中的一个二级指针 void **p,对 (**p) 赋值会改变参数的值,改变 (*p) 则不改变参数的值,不知道是不是这样? :question: