Подтвердить что ты не робот

Как удалить первые пять элементов массива?

@array = qw(one two three four five six seven eight);
<Some command here>
print @array;
4b9b3361

Ответ 1

Вот несколько способов, в порядке возрастания немоты:

Используя 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;

Я уверен, что гораздо лучшими хакерами, чем я могу придумать еще более глупые пути.:)

Ответ 2

Вы ищете splice встроенный:

splice @array, 0, 5;

Ответ 3

splice @array, 0, 5; сделает это.

Ответ 4

В качестве комментария к ответу friedo и для демонстрации нового нового объявления state здесь используется grep, который эмулирует friedo 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; 

Ответ 5

Я просто понял, что вам нужна последняя строка, поэтому нет необходимости в цикле

   my $_ = "@array"; s|(?:.*?\s){5}||;say;

Кстати, это, пожалуй, наименее эффективный способ сделать это, просто весело:)