Как получить фрагмент ссылочного массива в Perl? - PullRequest
1 голос
/ 14 сентября 2010

У меня есть ссылка на массив $arr_ref.Я хотел бы получить ссылку на массив, содержащий только ячейки i..j в исходном массиве.

Ответы [ 3 ]

7 голосов
/ 14 сентября 2010
@slice = @{$arr_ref}[$i..$j];
5 голосов
/ 14 сентября 2010
my $r = [0..9];    
print $_, "\n" for @$r[3..5];

Если переменная, содержащая ссылку, является более сложной, чем обычный скаляр, заключите ее в фигурные скобки.Это необходимо, потому что разыменование происходит перед поиском индекса:

my @refs = ( [0..9], [100..109] );
print $_, "\n" for @{ $refs[1] }[4..8];
4 голосов
/ 14 сентября 2010
@rainbow = ("red", "green", "blue", "yellow", "orange", "violet", "indigo");
$arr_ref = \@rainbow;
$i = 1;
$j = 3;
@slice = @$arr_ref[$i..$j]; # @slice is now green blue yellow
...