Обратите внимание, что если вы просто хотите отобразить первые два элемента @arr
:
my($var1, $var2) = map { $_->as_text } @arr;
вызовет $_->as_text
для всех элементов @arr
. В этом случае используйте фрагмент массива, чтобы избежать ненужных вызовов:
my($var1, $var2) = map { $_->as_text } @arr[0 .. 1];
Пример:
#!/usr/bin/perl
use strict;
use warnings;
my @arr = 'a' .. 'z';
my $count;
my ($x, $y) = map { $count++; ord } @arr;
print "$x\t$y\t$count\n";
$count = 0;
($x, $y) = map { $count++; uc } @arr[0 .. 1];
print "$x\t$y\t$count\n";
Выход:
C:\Temp> jk
97 98 26
A B 2
ord
вызывался для каждого элемента @arr
, тогда как uc
вызывался только для тех элементов, которые нас интересовали.