@array = qw(one two three four five six seven eight);
<Some command here>
print @array;
Как удалить первые пять элементов массива?
Ответ 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;
Кстати, это, пожалуй, наименее эффективный способ сделать это, просто весело:)