my $arr_ref = [qw(Field3 Field1 Field2 Field5 Field4)];
my ($last_arr_index, $next_arr_index);
Wenn Sie die tatsächliche Index des letzten Elements wissen müssen, zum Beispiel müssen Sie die Elemente des Arrays in einer Schleife über den Index zu kennen, verwenden $#$
:
$last_arr_index = $#{ $arr_ref };
$last_arr_index = $#$arr_ref; # No need for {} for single identifier
Wenn Sie müssen kenne den Index des Elements nach dem letzten, (z. B. um das nächste freie Element ohne push()
zu füllen),
ODER Sie müssen wissen, wie viele Elemente in das Array (die die gleiche Zahl ist), wie oben:
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
Wenn das, was Sie tatsächlich benötigen ist Zugang das letzte Element in der ArrayRef (z Die nur Grund, dass Sie wissen möchten, dass der Index später diesen Index verwendet, um auf das Element zuzugreifen), können Sie einfach die Tatsache verwenden, dass "-1" Index auf das letzte Element des Arrays verweist. Stützen auf Zaids Post für die Idee.
$arr_ref->[-1] = 11;
print "Last Value : $arr_ref->[-1] \n";
# BTW, this works for any negative offset, not just "-1".
Dank DVK. Genau das habe ich mir gedacht, als ich meine Antwort niedergeschrieben habe. – Zaid