Где документация по поведению @array -> [4] или% hash -> {key} в Perl? - PullRequest
4 голосов
/ 13 августа 2010

В последнем вопросе для доступа к хэшу использовался инвариантный синтаксис %hash->{key} = 1;, который, кажется, работает нормально, но я бы подумал, что это будет синтаксическая ошибка.

Кажется, это работает и для массивов:

my @array;

@array->[3] = 6;

Это поведение где-то задокументировано? Я не помню, чтобы читал это, но, возможно, упустил это из виду.

Кажется, он ведет себя так же, как:

(\%hash)->{key}

а не то, что я бы предположил:

(scalar %hash)->{key}  # runtime error

1 Ответ

8 голосов
/ 13 августа 2010

Кажется, это было покрыто perlmonks: http://www.perlmonks.org/?node_id=171177

<i>My reading of perlop has me convinced that this is an unintended
syntactic feature.</i>

And that's exactly what it is. When using the arrow, Perl will see
whatever is left of it as a reference. Including if you have something
like @l or %h.

Note that you will get the warning
Using an array as a reference is deprecated in Perl 5.8.0.

  Abigail
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...