如何使用foreach跳过数组中的第一个元素?

tuk*_*aef 8 arrays perl foreach

说我有一个数组:

my @arr = (1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)

现在我可以通过foreach迭代它:

foreach ( @arr ) {
    print $_;
}
Run Code Online (Sandbox Code Playgroud)

但有没有办法从第二个(例如)迭代到最后一个?

提前致谢.

TLP*_*TLP 15

这是perl.总是有不止一种方法可以做到这一点.如数组切片:

for (@arr[1 .. $#arr])   # for and foreach are exactly the same in perl
Run Code Online (Sandbox Code Playgroud)

您可以使用shiftAndy Lester建议,但这当然会改变您的原始阵列.

  • 当然,还有`for(1 .. $#arr){... $ arr [$ _] ...}`(使用O(1)内存而不是O(N)) (6认同)
  • @Demnogonis:那不是真的*.在Perl中,`for`和`foreach`是*相同* (4认同)
  • @Borodin:Dang,你是对的。我以为是那样的...很抱歉告诉你笑话。 (2认同)

And*_*ter 7

在循环之前,只需移开第一个元素.

my @arr = ( 1..5 );
shift @arr; # Remove the first element and throw it away

foreach ( @arr ) {
    print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)