Если у нас есть массив затем, мы можем сделать следующее:
my @arr = qw(Field3 Field1 Field2 Field5 Field4);
my $last_arr_index=$#arr;
Как мы делаем это для ссылки на массив?
my $arr_ref = [qw(Field3 Field1 Field2 Field5 Field4)];
my $last_aref_index; # how do we do something similar to $#arr;
Причина, по которой вам, вероятно, потребуется доступ к последнему индексу, - это получить последнее значение в ссылке на массив.
Если это так, вы можете просто сделать следующее:
$arr_ref->[-1];
Разыменование оператора ->
. [- 1]
- последний элемент массива.
Если вам нужно подсчитать количество элементов в массиве, нет необходимости делать $ # {$ arr_ref} + 1
. ДВК показал несколько лучших способов сделать это.
my $arr_ref = [qw(Field3 Field1 Field2 Field5 Field4)];
my $last_aref_index = $$arr_ref[$#{$arr_ref}];
print "last element is: $last_aref_index\n";
my $arr_ref = [qw(Field3 Field1 Field2 Field5 Field4)];
my ($last_arr_index, $next_arr_index);
Если вам нужно знать фактический индекс последнего элемента, например, вам нужно перебрать элементы массива, зная индекс, используйте $ # $
:
$last_arr_index = $#{ $arr_ref };
$last_arr_index = $#$arr_ref; # No need for {} for single identifier
Если вам нужно знать индекс элементов после последнего (например, чтобы заполнить следующий свободный элемент без push ()
),
ИЛИ вам нужно знать количество элементов в массиве (то есть такое же число), как указано выше:
my $next_arr_index = scalar(@$arr_ref);
$last_arr_index = $next_arr_index - 1; # in case you ALSO need $last_arr_index
# You can also bypass $next_arr_index and use scalar,
# but that's less efficient than $#$ due to needing to do "-1"
$last_arr_index = @{ $arr_ref } - 1; # or just "@$arr_ref - 1"
# scalar() is not needed because "-" operator imposes scalar context
# but I personally find using "scalar" a bit more readable
# Like before, {} around expression is not needed for single identifier
Если вам действительно нужно получить доступ к последнему элементу в ссылке на массив (например, only ] причина, по которой вы хотите узнать индекс, состоит в том, чтобы позже использовать этот индекс для доступа к элементу ), вы можете просто использовать тот факт, что индекс «-1» относится к последнему элементу массива. Реквизит посту Зайда за идею.
$arr_ref->[-1] = 11;
print "Last Value : $arr_ref->[-1] \n";
# BTW, this works for any negative offset, not just "-1".