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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

Чемпионы рейтинга экспертов в этой рассылке

Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2266
∙ повысить рейтинг »
Жерар
Статус: Профессор
Рейтинг: 2154
∙ повысить рейтинг »
Хватов Сергей
Статус: Профессионал
Рейтинг: 507
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Perl (Перл)

Номер выпуска:130
Дата выхода:25.05.2011, 04:00
Администратор рассылки:Калашников О.А. (Руководитель)
Подписчиков / экспертов:131 / 30
Вопросов / ответов:3 / 6

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


Вопрос № 82398: Доброе время суток! Подскажите как правильно сделать. Есть вывод из бд (см. код), как его сохранить в фаил?...
Вопрос № 51256: Доброго врение суток... посмотрите пожалуйста код и скажите где ошибка. Задача: программа должна вывести "ошибка ввода" если пользователь ввел не "да" и не "нет", а если ввел "да" ии "нет", пр...

Вопрос № 48211:

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

Отправлен: 05.07.2006, 10:55
Вопрос задал: lonlywolf (Студент)
Всего ответов: 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} и т.п.

Я бы ркомендовал использовать второй вариант.
Более подробнее можете прочитать в документации либо в литературе либо спросите лично
ну и ответ на второй вопрос надеюсь стал понятен. Украина, Харьков
ICQ # 48315257

Ответ отправил: -OC- (Специалист)
Ответ отправлен: 05.07.2006, 11:26

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 105566 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 82398:

    Доброе время суток! Подскажите как правильно сделать. Есть вывод из бд (см. код), как его сохранить в фаил?

    Отправлен: 13.04.2007, 14:50
    Вопрос задал: Bichkov Nikola
    Всего ответов: 3
    Страница вопроса »


    Отвечает Twerdetz (Студент) :
    Здравствуйте, Bichkov Nikola!

    Собственно, а не проще такой вариант?

    $sthl = $dbh->query("id,ts,ip,fromHandle,handle,message from logs");

    while (%row = $sthl->fetchhash()){
    $id=$row({"id"};
    $ts=$row{"ts"} ;
    $ip=$row{"ip"} и тд.
    } получили значения переменных и делаем с ними, что хотим.

    Ну, как бы без "prepare"? Ведь Вы исполняете запрос select, его можно заранее не готовить, учитывая, что он простой?

    С уважением,
    Twerdetz Россия, Иркутск

    Ответ отправил: Twerdetz (Студент)
    Ответ отправлен: 13.04.2007, 15:12

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 153758 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает -OC- (Специалист) :
    Здравствуйте, Bichkov Nikola!
    открываете файл на запись open (FILE, ">filename");
    оператором print выводите в соотв. дескриптор print FILE "........"; в теле цикла while
    закрываете. close FILE;
    вот и все :)
    Украина, Харьков
    ICQ # 48315257

    Ответ отправил: -OC- (Специалист)
    Ответ отправлен: 13.04.2007, 15:13

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 153759 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает ramok (Практикант) :
    Здравствуйте, Bichkov Nikola!

    1.
    ===
    26 while ($aref = $sth->fetchrow_arrayref){
    ===
    тут вместо = нужно ==

    2.
    ===
    27open (file, ">file.txt")
    or die ("Ошибка! Невозможно открыть фаил file.txt")
    ===
    тут после die поставьте ;

    3.
    ===
    print "$aref->[0] \t $aref->[1] \t $aref->[2] \t $aref->[3] \t $aref->[4] \t $aref->[5]" . "\n";
    ===
    вы забыли сказать что пишете это в файл
    тоесть так
    print file "$aref->[0] \t $aref->[1] \t $aref->[2] \t $aref->[3] \t $aref->[4] \t $aref->[5]" . "\n"; Адрес сайта: Unix tips

    Ответ отправил: ramok (Практикант)
    Ответ отправлен: 15.04.2007, 04:20

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 154070 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 51256:

    Доброго врение суток...
    посмотрите пожалуйста код и скажите где ошибка.
    Задача: программа должна вывести "ошибка ввода" если пользователь ввел не "да" и не "нет", а если ввел "да" ии "нет", программа должна вывести то что ввел пользователь. У меня почемуто в любом случае выводится "ошибка ввода"
    Всем спасибо...

    Отправлен: 05.08.2006, 18:44
    Вопрос задал: Lperw
    Всего ответов: 2
    Страница вопроса »


    Отвечает dianacode (Практикант) :
    Доброе время суток, Lperw

    ну я бы во-первых обратила внимание на консоль, с которой работаю -
    кодировка и прочая ересь -

    1) пробуем подключать locale

    ну и искать всёж регуляркой - не надеятся на авось -

    2) =~/

    3) в конце-концов самый лучший вариант - НЕ ЗАПАРИВАТЬСЯ и не искать таких вариантов - используйте EN набор символов и будет вам щастье )

    с уважением, удачи

    Приложение:

    -----
    there is more than one way to do it

    Ответ отправил: dianacode (Практикант)
    Ответ отправлен: 06.08.2006, 01:25

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 110257 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Muad Dib (Х Заблокирован) :
    Здравствуйте, Lperw!
    Ошибка впринципе в том что вы очень уж закрутили условием cмотрим что у вас:
    if( $ans ne "yes" or $ans ne "no"){print "mistake;}
    Если $ans yes - то будет истинным второе значение и or вернет 1. Если $ans no - первое, опять таки 1, если будет вообще что-то левое, то опять таки будет 1 - т.е. при любом раскладе будет печатать mistake. Условие лучше привести к виду:
    if($ans eq yes or $ans eq no){print "your string $ans"} ... ну и так далее, или свести к регулярному выражнию как вам посоветовали раньше:

    #!/usr/bin/perl -w
    print qq( \n);
    $ans = ;
    if ($ans=~m/^(да|нет)$/ ){
    print "your string $ans \n";
    }else{
    print "mistake \n";
    }

    По поводу use POSIX и use locale - не знаю - у меня все прекрасно и без них работает :).



    -----
    Use Linux - be free!

    Ответ отправил: Muad Dib (Х Заблокирован)
    Ответ отправлен: 06.08.2006, 04:15

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 110261 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное