Ваш первый пример отличается от других. Это фрагмент массива - но замаскированный, поскольку вы запрашиваете только один элемент.
@{$test{"one"}}[0];
@{$test{"one"}}[1, 0]; # Another slice example.
Другие ваши примеры - это альтернативные способы разыменования элементов в многоуровневой структуре данных. Однако использование массива для разыменования не рекомендуется (см. perldiag ).
@{$test{"one"}}->[0]; # Deprecated. Turn on 'use warnings'.
$test{"two"}->[0]; # Valid.
$test{"one"}[1]; # Valid but easier to type.
Что касается последнего примера, два подписчика, сидящие рядом друг с другом, имеют подразумеваемое значение ->
между ними. См., Например, обсуждение правила Arrow в perlreftut.