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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

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

_Ayl_
Статус: Студент
Рейтинг: 1384
∙ повысить рейтинг »
Хватов Сергей
Статус: Практикант
Рейтинг: 158
∙ повысить рейтинг »
Анатолий Ясень
Статус: Студент
Рейтинг: 131
∙ повысить рейтинг »

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

Номер выпуска:116
Дата выхода:02.11.2009, 15:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:250 / 33
Вопросов / ответов:6 / 11

Вопрос № 51911: Здравствуйте эксперты, у меня следующее: Программа должна считывать несколько слов в массив, затем выдать количесво элементов, и затем, распечатать все введенные элементы... для заполнения массива я использую оператор <STDIN>, это у мен...


Вопрос № 155387: Здравствуйте уважаемые эксперты. Нужна Ваша помощь. Есть некоторая база даных в MySQL. Табличка users местит поля login и password. Есть также html форма, которая передаёт пораметры login и password скрипту vhod.pl. Вопрос, каким образом можно осу...
Вопрос № 20125: Здравствуйте эксперты. Помогите мне пожалуйста вот по такому вопросу: Что мне куда нужно прописать чтоб файл без расширения обрабатывался перл интерпретатором? Спасибо....

Вопрос № 51911:

Здравствуйте эксперты, у меня следующее:
Программа должна считывать несколько слов в массив, затем выдать количесво элементов, и затем, распечатать все введенные элементы...
для заполнения массива я использую оператор <STDIN>, это у меня получается, так же получается вывести все элементы массива на экран... но вот подсчитать колличество слов в массиве не получается, насколько мне известно это делается путем присваевания скалярной переменной всего массива (то бишь массив в скалярном контексте), но вот у меня, после того как я введу 5 слов, пишет что в массиве только 2, почему??? (заканчиваю ввод слов путем нажатия ctr+z, т.е. конец строки) листинг примерной программки в приложениии.
Всем спасибо за внимание.

Отправлен: 12.08.2006, 02:22
Вопрос задал: Lperw, 2-й класс
Всего ответов: 3
Страница вопроса »


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

эта проблема - не проблема - подскажите перл как обращаться с переменной - ответьте ему что это скаляр - а именно :

$q=@words+0;

или

$q=$#words;

вот и всё

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

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

Ответ отправил: dianacode, Практикант
Ответ отправлен: 12.08.2006, 02:40

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 111324 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает -OC-, Специалист :
    Здравствуйте, Lperw!
    начнем с простого - с размера массива.
    вы делаете правильно , т.е. присвоение скаляру массива всегда дает его размер.
    но более "красивым" считается использование функции scalar.
    $q = scalar(@words);
    Но ошибка у вас скорее всего не в получении размера массива, а в его формировании.
    А почему вы не пользуетесь отладкой? Я не говорю об встроенном отладчике, но хотя бы контролировать значения вводимые с STDIN , а тем более в массив.После ввода просто выведите построчно ваш массив( т.е. каждый элемент массива - новая строка) и вы поймете почему у вас размер не совпадает с требуемым.
    ИМХО ошибка у вас именно вот здесь - @words=;. Так не делается. Вы должны четко знать каким образом будет осужествлятьсяя ввод и что будет являться элементом массива т.е. при вводе слов что будет разделять их на элементы массива пробелы или перевод строки.
    Если каждое слово будет вводиться с новой строки, то для этого лучший вариант такой(см. приложение). Если же в каждой строке будет по нескольку слов и их так же надо разбить на элементы, то приведенный код нужно только немного модифицировать с учетом разбиения строки на подэлементы , используя split с соответствующим разделителем вместо $_ в push. См. вариант 2 в приложении . Этот вариант более универсален и его можно модифицировать под свои нужды. Он работает когда каждый элемент массива- новая строка и отделенные друг от друга пробелом слова в строке. Т.е. при таком вводе :
    hfwfhoei
    fhdslhf hfskdjhfsd sedfuefj
    hfsih dihfsdi
    это будет 6 элементов.

    надеюсь что об"яснил понятно. Извиняюсь за некоторую сумбурность.

    Приложение:

    Ответ отправил: -OC-, Специалист
    Ответ отправлен: 12.08.2006, 14:09

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

    words=<STDIN>;
    считывает весь файл, разбивая его на строки. Так что вы считаете не слова, а строки.
    Попробуйте так:

    Приложение:

    Ответ отправил: Хватов Сергей, Практикант
    Ответ отправлен: 14.08.2006, 10:21

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


    Вопрос № 155387:

    Здравствуйте уважаемые эксперты. Нужна Ваша помощь. Есть некоторая база даных в MySQL. Табличка users местит поля login и password. Есть также html форма, которая передаёт пораметры login и password скрипту vhod.pl. Вопрос, каким образом можно осуществить проверку на CGI правильности ввода логина и пароля. Начало файла примерно следующие:
    #!/usr/bin/perl -w
    use CGI qw(:standard);
    use DBI;
    use strict;
    print "Content-Type: text/html \n";
    print "Charset: koi8-u\n\n";
    my ($dbh) = DBI->connect("DBI:mysql:student:localhost", "student", "student", {RaiseError=>1});
    ...

    Отправлен: 22.12.2008, 18:53
    Вопрос задал: Sashainfo, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Duke, Студент :
    Здравствуйте, Sashainfo!

    1. Получаем строку параметров
    my $pars=$ENV{'QUERY_STRING'} # Если method=get
    sysread(STDIN,my $pars,$ENV{'CONTENT_LENGTH'}) # Если method=post

    2. Разбираем строку параметров в хеш
    for(split '&',$pars){
    (my $a,my $b)=split '=';
    $b=~s/\+/ /g;
    $b=~s/%(.{2})/pack('C',hex($1))/eg;
    $pairs{$a}=$b;
    }

    3. Проверяем логин и пароль
    my @r=$dbh->selectrow_array("select count(*) from users where login='$pairs{'login'}' and password='$pairs{'password'}'");
    if($r[0]){
    #Совпадает
    }else{
    #Не совпадает
    }

    Ответ отправил: Duke, Студент
    Ответ отправлен: 23.12.2008, 09:32

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


    Вопрос № 20125:

    Здравствуйте эксперты.
    Помогите мне пожалуйста вот по такому вопросу: Что мне куда нужно прописать чтоб файл без расширения обрабатывался перл интерпретатором?
    Спасибо.

    Отправлен: 22.04.2005, 23:16
    Вопрос задал: eXuss, Посетитель
    Всего ответов: 2
    Страница вопроса »


    Отвечает Alex Diesel :
    Здравствуйте, eXuss!
    В ОС *никс достаточно файл сделать исполняемым и в первой строке написать
    ( например chmod a+x <файл>)
    #! <полный путь к интерпретатору>
    в винде - никак, насколько мне известно

    Ответ отправил: Alex Diesel
    Ответ отправлен: 22.04.2005, 23:42

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 48427 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Thomas Arden, Посетитель :
    Здравствуйте, eXuss!
    нужно прописать в первой строке файла #!/usr/bin/perl и сделать файл исполняемым

    Ответ отправил: Thomas Arden, Посетитель
    Ответ отправлен: 23.04.2005, 05:38

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


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

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

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

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

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

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

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


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.10 от 26.10.2009

    В избранное