$#array
просто дает вам последний индекс в массиве, который содержит значение, где @array
возвращает вам размер массива при использовании в скалярном контексте, который вернул бы вас на 1 больше, чем это.
Например:
#!/usr/bin/perl
@array = ();
push(@array,10);
push(@array,11);
print $#array, "\n"; # Prints 1
print scalar(@array), "\n"; # Prints 2
print $array[$#array], "\n"; # Prints 11 (i.e. the last element)
Заявив, что вы разделены, создается список только из одного элемента. Таким образом, $#array
предоставит вам 0. Доступ к массиву с индексом -1 также даст вам последний элемент в вашем массиве, поскольку у вас только один элемент в вашем массиве, выражение $#info - 1
равно -1
(т.е. последний элемент в вашем массиве)
Если бы в вашем массиве было 2 элемента, скажите: собака, кошка. Тогда $#array
даст кошку, в то время как $#array - 1
даст собаку, потому что вы не будете производить -1
со своим выражением $#info - 1
.