Глава 3: Массивы и списочные данные
3.7 Интерполяция массивов
Как и скаляры, значения массивов могут интерполироваться в строку, заключенную в двойные кавычки. Каждый элемент массива заменяется его значением, например:
@fred = ("hello","dolly");
$у = 2;
$х = "This is $fred[1]'s place"; # "This is dolly's place"
$x = "This is $fred($y-l]'s place"; # To же самое
Отметим, что индексное выражение вычисляется как обычное, как будто оно находится вне строки, т.е. оно предварительно не интерполируется.
Если вы хотите поставить после простой ссылки на скалярную переменную литеральную левую квадратную скобку, нужно выделить эту скобку так, чтобы она не считалась частью массива:
@fred = ("hello","dolly"); # присвоить массиву @fred значение для проверки
$fred = "right"; # мы пытаемся сказать "this is right[1]"
$х = "this is $fred[l]"; # неправильно, дает "this is dolly"
$x = "this is ${fred}[l]"; # правильно (защищено фигурными скобками)
$х = "this is $fred"."[1]"; # правильно (другая строка)
$х = "this is $fred\[l]"; # правильно (скобку защищает обратная косая)
Аналогичным образом может интерполироваться список значений перемен-ной-массива. Самая простая интерполяция — интерполяция всего массива, обозначенного именем (с начальным символом @). В этом случае элементы интерполируются по очереди, с разделением их пробелами, например:
@fred = ("а","bb","ccc",1,2,3);
$аll = "Now for @fred here!";
# $all получает значение "Now for a bb ccc 123 here!"
Можно также выбрать часть массива с помощью среза:
@fred = ("а","bb","ccc",1,2,3);
$аll = "Now for @fred[2,3] here!";
# $all получает значение "Now for ccc 1 here!"
$all = "Now for @fred[@fred[4,5]] here!"; # то же самое
Опять-таки, если вы хотите поставить после ссылки на имя массива литеральную левую квадратную скобку, а не индексное выражение, можете использовать любой из описанных выше механизмов.
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|