Forum Webscript.Ru
Программирование => Perl => Тема начата: Yaroslav от 29 Сентября 2003, 12:18:06
-
после первых 30 минут чтения я понял что:
1. Стоимость книги себя оправдало.
2. Предыдущая "Изучаем Перл" - приблизительно как букварь по сравнению с "Война и мир".
3. Понял, что ничего не понял. В связи с этим открываю новый топик для большей понятливости.
Почти сразу я сталкнулся с многомерным хеш собственно по примеру с книги есть вопрос:
$wife{"Iakov"} = ["Liya", "Raxil", "Valla", "Zelfa"];
print qq($wife{"Iakov"}[1]\\n); #выводит Raxil
а как сделать что б выводило все 4 значения?
что значит строчка:
$gradies{$student} .= $grade . " ";
исходя из того что я понял:
создается хеш, далее к $grade дописывается пробел и потом к названию хеш или к ключу дописывается (.=) $grade.
булемурда какая то получается.
-
Yaroslav:
а как сделать что б выводило все 4 значения?
print @{$wife{Iakov}};
print join(\' \', @{$wife{Iakov}});
print "$_ " for @{$wife{Iakov}};
print $wife{Iakov}->[$_] . \' \' for 0 .. $#{$wife{Iakov}};
и еще 1000 и 1 способ :)
что значит строчка:
$gradies{$student} .= $grade . " ";
К значению хэша %gradies, по ключу $student, добавляется значение переменной $grade и пробельчик.
-
ondr:
print @{$wife{Iakov}};
print join(\' \', @{$wife{Iakov}});
print "$_ " for @{$wife{Iakov}};
print $wife{Iakov}->[$_] . \' \' for 0 .. $#{$wife{Iakov}};
вот спасибо.
ondr:
К значению хэша %gradies, по ключу $student, добавляется значение переменной $grade и пробельчик.
не понимаю зачем тогда в книге морочат голову и добавляют один символ если это можно записать
$gradies{$student} = $grade . " ";
-
Yaroslav:
не понимаю зачем тогда в книге морочат голову и добавляют один символ если это можно записать
$gradies{$student} = $grade . " ";
Записать так можно но смысл будет другой.
Потому что "=" и ".=" разные вещи.
Внимательнее прочитай мой предыдущий пост. Там ни слова не было о перезаписи, там шла речь о добавлении значения.
-
Здравствуйте.
В продолжение темы:
1. что то у меня не получается с написанием:
$tema{"Афиши"} = {
"A2" => {
"Плотер" => ["16"],
"Офсет" => ["17"], };
"A3" => {
"Плотер" => ["18"],
"Принтер" => ["19"],
"Офсет" => ["20"], };
};
$tema{"Визитки"} = {
"Шелкография" => ["13"],
"Принтер" => ["14"],
"Офсет" => ["15"],
};
print @{$tema{"Афиши"}{"A2"}{"Плотер"}}; # выдает ошибку в "A3" => {
2. Правильно ли я начал мыслить? мне надо сделать так сказать прайс-листы типа ( http://www.urp.kiev.ua/index.cgi?req=priceview )
но как видите (пример выше) с каждой рубрики не известно сколько будет переходов (от 1 до 3), цифрами в значении хеша я показываю в какой строке файла будет храниться запись по данной позиции.
А как бы Вы это сделали?
-
1.
"Офсет" => ["17"], }; <- Исправь все ошибки
print $tema{"Афиши"}{"A2"}{"Плотер"}[0];
-
NeoNox
ты знаешь, показывать что ты знаешь и не помогать - не хорошо.
NeoNox:
"Офсет" => ["17"], }; <- Исправь все ошибки
как то я и сам знал что ошибки, но где? цитирую свое сообщение:
- 1. что то у меня не получается с написанием:
NeoNox:
print $tema{"Афиши"}{"A2"}{"Плотер"}[0];
зачем? оно тут не при делах.
-
А не стыдно, а?
$tema{"Афиши"} = {
"A2" => {
"Плотер" => ["16"],
"Офсет" => ["17"], }
"A3" => {
"Плотер" => ["18"],
"Принтер" => ["19"],
"Офсет" => ["20"], }
};
-
NeoNox:
А не стыдно, а?
в том то все и дело что пока не стыдно...
syntax error, near ""A3""
-
Мда...
Интерпритатор тебе пальцем показал где искать.
перед A3 закончилось определение $tema{"Афиши"}.
Вот как он выглядел:
$tema{"Афиши"} = {
"A2" => {
"Плотер" => ["16"],
"Офсет" => ["17"], };
А дальше у тебя идет что? А3
Вопросы?
-
NeoNox:
Вопросы?
за то что обьяснил - спасибо.
но проблемма то не исчезла, я хотел сделать многомерный хеш по первому ключу, а вышел как обыкновенный ...
-
нк прямо как ручник, аж самому стыдно стало :) (специально для NeoNox)
$tema{"Афиши"} = {
"A2" => { "Плотер" => ["16"], "Офсет" => ["17"], } ,
"A3" => { "Плотер" => ["18"], "Принтер" => ["19"], "Офсет" => ["20"], }
};
-
Yaroslav
Когда у тебя хеш внутри хеша, точки с запятой внутри не ставятся.
$tema{"Афиши"} = {
"A2" => {
"Плоттер" => ["16"],
"Офсет" => ["17"]
}, #здесь должна быть запятая
"A3" => {
"Плоттер" => ["18"],
"Принтер" => ["19"],
"Офсет" => ["20"]
} #а здесь - ничего
};
-
Упс.. Опоздал. :)
Кстати, Yaroslav:
$tema{"Афиши"} = {
"A2" => { "Плотер" => ["16"], "Офсет" => ["17"], #<-- последняя запятая не нужна
} ,
"A3" => { "Плотер" => ["18"], "Принтер" => ["19"], "Офсет" => ["20"], #<-- здесь тоже не обязательно
}
};
-
mike:
последняя запятая не нужна
знаю, спасибо, это как бы так, случайно осталась (в принципе то ничего не меняется :)