Вы всегда должны запускать сценарии с
use strict;
use warnings;
Если вы были, вы бы заметили ошибку:
Global symbol "@vvv" requires explicit package name at ...
Это означает, что $#vvv
относится к максимальному индексу массива @vvv
, а не хэш. В perl @vvv
и %vvv
представляют собой две отдельные переменные. Таким образом, @vvv
не имеет никакого отношения к %vvv
, и эта операция не используется.
Что человек, который написал код, возможно, думал о способе усечь массив:
my @array = 1 .. 6; # 1,2,3,4,5,6 but written as a range
$#array--; # lower maximum index by 1
print "@array"; # prints "1 2 3 4 5"
Однако, это не работают желания хэш.
И, как пояснил Фрайар, reverse
- это способ обмена ключами и значениями хэша. При использовании в строке он меняет строку, например. «foobar» -> «raboof», но при использовании в списке он меняет его, поэтому 1,2,3,4,5,6
становится 6,5,4,3,2,1
.
'$ # vvv' - это не комментарий, но он не оказывает никакого влияния и на хэш. –
Спасибо вам и Синан за исправление. Я увидел # и сразу подумал о комментариях. Виноват! – MadFriarAvelyn
Спасибо за ваш ответ. Действительно, я просто удалил строку, подобную комментарию, и получил тот же результат. Тем не менее, существует очень похожая проблема с массивами, и там, когда я удалял одну и ту же строку, я получил разный вывод. Вот код .. '#! Usr/bin/perl @vvv = (1,2,3,4,5,6,7); $ # vvv--; print $ vvv [$ # vvv], "\ n"; ' – boogie