Что означает `$ array [x, y]` в Perl? - PullRequest
0 голосов
/ 05 ноября 2011

Я знаю, @array[0,2,6] - это массив с несколькими значениями.

И я был уверен, что $scalar=3 - это одна переменная с одним скалярным значением.

Однако, чтоэто $array[3, 4]?Это скалярная переменная с двумя значениями?

Ответы [ 2 ]

10 голосов
/ 05 ноября 2011

@array[0,2,6] (или более обобщенно @array[ EXPR ]) - это фрагмент массива .(См. perldata ). Выражение индекса оценивается в контексте списка, возвращаемый список считается списком индексов, а элементы, идентифицированные этими индексами, возвращаются срезом.

$array[ EXPR ] является элементом массива .Выражение индекса оценивается в скалярном контексте, возвращаемое значение принимается за индекс, и возвращается элемент, идентифицированный этим индексом.

Код 3,4 оценивается как 4 в скалярном контекстеоператор запятой в perlop , поэтому $array[3,4] совпадает с $array[4] за исключением предупреждения о пустом контексте.

5 голосов
/ 05 ноября 2011

Попробуйте увидеть:

perl -E '@ar = (10,11,12,42);say $ar[1,2,3]'
42

1,2,3 - это список. В скалярном контексте он возвращает свой последний член.

...