Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Perl


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Perl

Выпуск № 58
от 10.07.2006, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 149, Экспертов: 10
В номере:Вопросов: 2, Ответов: 3


Вопрос № 48211: Доброе время! Есть ли на Perl'е тип данных "запись", и как он реализуется, если он есть? Копался в текстах модулей и нашёл запись вида: $drh->{Name}. Что она означает в плане синтаксиса?...
Вопрос № 48272: Здравствуйте, вот написал типа программку... но что-то она не работает, не подскажите-ли вы мне где я допустил ошибку, Заранее всех благодарю....

Вопрос № 48.211
Доброе время!
Есть ли на Perl'е тип данных "запись", и как он реализуется, если он есть?
Копался в текстах модулей и нашёл запись вида: $drh->{Name}. Что она означает в плане синтаксиса?

Приложение:

Отправлен: 05.07.2006, 10:55
Вопрос задал: PaveL SvetlY (статус: 6-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: -OC-
Здравствуйте, PaveL SvetlY!
такого типа данных как "запись в Perl не существует, но вместо этого можете использовать хэши. В вашем случа можно либо так:
%myrecord = (
id => 0,
host => 'hostname',
ip => 192.168.0.1
);
обращаться через $myrecord{id}или $myrecord{ip} и т.п.

Либо второй вариант использовать ссылку на анонимный хэш:

$myrecord = {
id => 0,
host => 'hostname',
ip => 192.168.0.1
};
обращаться через $myrecord->{id} и т.п.

Я бы ркомендовал использовать второй вариант.
Более подробнее можете прочитать в документации либо в литературе либо спросите лично
ну и ответ на второй вопрос надеюсь стал понятен.
Ответ отправил: -OC- (статус: Студент)
Ответ отправлен: 05.07.2006, 11:26
Оценка за ответ: 5
Комментарий оценки:
Ещё, конечно, было бы неплохо ссылку на литературу, ну да ладно %) Почитал документацию на www.perl.com... написано хорошо и много, но в виду англоязычности не всё понятно.


Вопрос № 48.272
Здравствуйте, вот написал типа программку... но что-то она не работает, не подскажите-ли вы мне где я допустил ошибку,
Заранее всех благодарю.

Приложение:

Отправлен: 05.07.2006, 20:04
Вопрос задал: Lperw (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Muad Dib
Здравствуйте, Lperw!

#!/usr/bin/perl -w
print qq[Привет, как вас зовут? ];
$name = ; chomp $name;
$answer="y";
while ($answer =~ "y") { # -->>> для сравнения строк == не используется!!!!
print qq[$name, угадай число от 0 до 5. ];
$rand_num = int(rand 5);
$user_num = ; chomp $user_num;
if ($user_num != $rand_num) {
print qq[Ответ не верный. ]
}
else {print qq[Поздравляю $name, вы угадали!!!];}
print "Хотите повторить? (y/n) ";
$answer = ; chomp $answer;
}
Ответ отправил: Muad Dib (статус: Студент)
Ответ отправлен: 05.07.2006, 21:47

Отвечает: -OC-
Здравствуйте, Lperw!
ошибка у вас здесь :
while ($answer == "y") {

для сравнения строк используется операторы (в скобках их эквиваленты для числовых переменных)

eq ( == )
ne (!= )
lt (<)
gt (>)
le (<=)
ge (>=)

возможен вариант использования поиска по шаблону , как была написано в предидущем ответе ( кстати не правильно и синтаксически и логически )
примерно так :

while ($answer =~ /^y$/) {
или
while ($answer =~ m/^y$/) {

синтаксическая ошибка - не указан опреатор поиска - //( m//)
логическая ошибка - совпадение будет в любом слове в котором будет содежаться буква "y". Т.е. если пользователь введет любое сочетание букв в котором окажется и "y", то это будет считаться как утвердительный ответ.(ну это в двух словах). В указаном мной примере будет осуществляться поиск только единственной буквы "y" и ничего больше, т.е. при вводе только одной буквы у ответ будет утвердительным.
Ответ отправил: -OC- (статус: Студент)
Ответ отправлен: 06.07.2006, 18:40
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное