@array = qw(one two three four five six seven eight);
<Some command here>
print @array;
答案 0 :(得分:52)
以下是一些方法,以愚蠢的顺序递增:
使用slice:
@array = @array[ 5 .. $#array ];
使用splice
:
splice @array, 0, 5;
使用shift
:
shift @array for 1..5;
使用grep
:
my $cnt = 0;
@array = grep { ++$cnt > 5 } @array;
使用map
:
my $cnt = 0;
@array = map { ++$cnt < 5 ? ( ) : $_ } @array;
我确信黑客远比我能提出更好的黑客方式。 :)
答案 1 :(得分:11)
您正在寻找splice内置:
splice @array, 0, 5;
答案 2 :(得分:4)
splice @array, 0, 5;
会这样做。
答案 3 :(得分:3)
作为对friedo答案的评论并展示很酷的新声明state
,这里使用的是grep
,其中的map
模仿了#!/usr/bin/perl
use strict;
use warnings;
use feature 'state';
my @array = qw(one two three four five six seven eight);
my @new_array = grep {state $count; ++$count > 5} @array;
print "$_\n" for @new_array;
。
{{1}}
答案 4 :(得分:-2)
我刚刚意识到你只需要最后一个字符串,所以不需要循环
my $_ = "@array"; s|(?:.*?\s){5}||;say;
顺便说一句,这可能是效率最低的方式,只是玩得开心:)