[Perl] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. pento

    pento Elder - Старейшина

    Joined:
    3 Jul 2006
    Messages:
    126
    Likes Received:
    24
    Reputations:
    -1
    Я может не совсем тебя понял, но это обычные вызовы обычных функций
     
  2. Dimi

    Dimi New Member

    Joined:
    7 Feb 2006
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Это ясно вопрос в следующим эти функци стандартные или они должны быть гдето описанны есле описанны то как искать их описание? И еще вопрос сверху: на сервер есть некоторая папка scripts в ней файлы
    1.pl 2.pl 3.pl есле пишу scripts\2.pl есле scripts\2.pl то вылетает некотарая стриница причем скрипт явно не выполняектся. Возможен ли такой варинт что не дает мне доступ к скрипту некий сскрипт типа index.pl который скажим провеояет меня по ip?
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    else { $ErrMsg="Логин $FORM{'login'} не зарегистрирован."; StartHTML(); login_form(); finish_doc() }

    ну начнем с того, что перед фигурной скобкой в конце пропущено ";"

    что уже не даст выполнится скрипту корректно. Просто у тебя отключено отображение ошибок, по всей видимости
     
  4. Dimi

    Dimi New Member

    Joined:
    7 Feb 2006
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Насамом деле код не мой мне надо с ним тока разобратся. С ; в конце тоже не очень понятно но ошибка не вылезает. Тока вопрос остается темже StartHTML(); login_form(); finish_doc() стандартные это функции или нет. И плюс для кучи еще вопрос. В коде часто встречатся строчко $FORM{'login'} $FORM{'user'} $FORM{'pass'} и т д, так вот немогу понять из за не знание perl что это толком значит я так понимаю это просто присваивание значение переменной char? И какой смысл тогда имет такая строчка if($FORM{'login'})
     
  5. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    А что непонятного с точкой с запятой? Все операторы перла разделяются этим знаком, и неважно, в одну строку записан скрипт или в несколько.
    Это вызовы подпрограмм. Их код ищите или в текущем файле, или смотрите, какие пакеты подключены в начале скрипта оператором use. Этими функциями, если судить по названиям, формируется веб-страница
    В перле существует такой термин как ассоциативные массивы (хэши). В данном случае описывается хэш %FORM и идет обращение к его полям login, user и pass. Хэш, судя по всему, формируется какой-либо веб-формой, и после нажатия на submit происходит его заполнение.
    Строка
    Code:
    if($FORM{'login'})
    означает проверку, пустой логин ввел юзер или нет. Все, что внутри оператора if, выполнится только, если логин был введен.
     
  6. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    В PERL символ ";" - это разделитель между выражениями языка, а не символ их окончания, поэтому отсутствие его в конце блока кода - не ошибка.
     
  7. Dimi

    Dimi New Member

    Joined:
    7 Feb 2006
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Спасибо за ответы
     
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    2 Digimortal:

    Да я уже понял, раздел с php перепутал. Сорри
     
  9. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Регулярка, нужна помощь, срочно оч...

    abbreviate
    v. 1 shorten, compress, contract, truncate, trim, reduce,
    curtail: We abbreviated some of the longer words to save space.
    2 shorten, cut, condense, abridge, abstract, digest, epitomize,
    summarize, US synopsize: The school presented an abbreviated
    version of A Midsummer Night's Dream.

    Есть куча текста такого вида, нужно удалить все предложения(примеры).
    В этой ситуации это:
    : The school presented an abbreviated
    version of A Midsummer Night's Dream.
    Все примеры начинаются с : и заканчиваются .
    Вот мои не рабочие варианты:
    s/: (.*)//ig;
    s/: (.*) \.//ig;
    s/: (.*) \n \.//ig;
    s/: (.*) \n (.*) \.//ig;
    Помогите пожалуйста!
     
  10. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    s/:[^\.]+\.//g;
    
     
  11. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    krypt3r, не то! Ребят помогайте - кто подскажет обязательно плюс поставлю! Еще раз обьясняю задание. Есть текст типа:
    wfvdsgfds: sdfsdfdsfasdasf. Надо удалить : sdfsdfdsfasdasf.
     
  12. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Чего не то? o_O
    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    my $text = "abbreviate
    v. 1 shorten, compress, contract, truncate, trim, reduce,
    curtail: We abbreviated some of the longer words to save space.
    2 shorten, cut, condense, abridge, abstract, digest, epitomize,
    summarize, US synopsize: The school presented an abbreviated
    version of A Midsummer Night's Dream.";
    
    $text =~ s/:[^\.]+\.//g;
    print $text, "\n";
    
    Результат
    Code:
    abbreviate
    v. 1 shorten, compress, contract, truncate, trim, reduce,
    curtail
    2 shorten, cut, condense, abridge, abstract, digest, epitomize,
    summarize, US synopsize
    
     
    1 person likes this.
  13. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    С этим вопросом разобрался! Спасибо.
    Но ребя добить не получается никак :( Помогите плз.
    Вообще суть такая, есть текстовой документ с таким текстом:

    Code:
    abandon v. 1 give up or over, yield, surrender, leave, cede, let go,
    deliver (up), turn over, relinquish: I can see no reason why we
    should abandon the house to thieves and vandals. 2 depart from,
    leave, desert, quit, go away from: The order was given to
    abandon ship. 3 desert, forsake, jilt, walk out on: He even
    abandoned his fianc‚e. 4 give up, renounce; discontinue, forgo,
    drop, desist, abstain from: She abandoned cigarettes and whisky
    after the doctor's warning.
    
    --n. 5 recklessness, intemperance, wantonness, lack of
    restraint, unrestraint: He behaved with wild abandon after he
    received the inheritance.
    
    abandoned adj. 1 left alone, forlorn, forsaken, deserted, neglected;
    rejected, shunned, cast off or aside, jilted, dropped, outcast:
    An abandoned infant was found on the church steps. Totally
    alone, she felt abandoned by her friends. 2 bad, immoral,
    amoral, wicked, sinful, evil, corrupt, unprincipled,
    unrestrained, uninhibited, reprobate; loose, wanton, debauched,
    wild, dissolute, dissipated, profligate; depraved, lewd,
    lascivious, flagitious: His abandoned behaviour soon landed him
    in jail.
    
    abbreviate
    v. 1 shorten, compress, contract, truncate, trim, reduce,
    curtail: We abbreviated some of the longer words to save space.
    2 shorten, cut, condense, abridge, abstract, digest, epitomize,
    summarize, US synopsize: The school presented an abbreviated
    version of A Midsummer Night's Dream.
    
    abbreviated
    adj. skimpy, brief, revealing: The dancers' abbreviated
    costumes shocked some members of the audience.
    
    abbreviation
    n. initialism; acronym; shortening, contraction: UK is one
    kind of abbreviation, or initialism; NATO, which is pronounced
    as a word, is another, usually called an acronym.
    
    abdicate v. give up, renounce, disclaim, waive, disown, surrender,
    yield, relinquish, abandon, resign, quit: He abdicated all
    responsibility for care of the children. She abdicated the
    throne to marry a commoner.
    
    abduct v. kidnap, carry off, make away or off with, seize, Slang US
    snatch, grab: The child that was abducted is safe.
    
    abet v. 1 encourage, urge, instigate, incite, provoke, egg on, prod,
    goad; aid, help, assist: The jury found that his wife had
    abetted him in the murder. 2 countenance, approve (of),
    support, endorse, second, sanction, condone; further, advance,
    promote, uphold: By failing to inform on the terrorists, the
    neighbours abetted the bombing.
    
    abeyance n. in abeyance. pending, abeyant, reserved, in reserve,
    shelved, pushed or shoved or shunted aside, postponed, put off,
    suspended, US tabled; temporarily inactive, dormant; latent;
    Colloq in a holding pattern, on the back burner; Slang on hold,
    in the deep-freeze, on the shelf, on ice, hanging fire: Legal
    proceedings were held in abeyance so that talks could take place
    to reach an out-of-court settlement.
    
    abhor v. hate, loathe, detest, abominate, execrate; regard or view
    with horror or dread or fright or repugnance or loathing or
    disgust, shudder at, recoil or shrink from; be or stand aghast
    at: He said that he abhorred any violation of human rights.
    
    abhorrent adj. hateful, detestable, abhorred, abominable, contemptible,
    odious, loathsome, horrid, heinous, execrable, repugnant;
    repulsive, repellent, revolting, offensive, disgusting,
    horrifying, obnoxious: The idea of war was totally abhorrent to
    her.
    
    и т.д.
    Нужно сделать что бы было так:
    abhorrent|hateful|detestable и т.д.
    т.е. убрать из текста все числа, удалить все словечки типа adj. v. и т.п.
    Удалить все примеры (начинаются или с : или с . заканчиваются .).

    Вот мои наброски:

    Code:
    open(TXT,"file.txt");
    open(ST,">result.txt");
    @all=<TXT>;
    close(TXT);
    
    $string=join($string,@all); 
    $string=~s/v\.|adj\.|n\.//ig; 
    $string=~s/\d//ig;	      
    $string=~s/,|;/|/ig;  
    $string=~s/:[^\.]+\.//g;      
    $string=~s/\.(.*)\.//g;      
    
    
    
    @new=$string;
    
    foreach (@new){
    	$_=~s/ {2,}/|/g;      #Удаление пробелов
    	$_=~s/ //g;           #Удаление пробелов
    	$_ .= "\n";           #Установка символа переноса строки
    	print ST $_;          #Запись в файл
    }
    
    close(ST);
    
    Но работает хреновенько :(. Кто действительно поможет, получит небольшое денежное вознагрождение и + !
    Всем спасибо заранее
     
    #793 $p01nt, 24 Nov 2008
    Last edited: 24 Nov 2008
  14. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    Обязательно на Perl?
    Могу на PHP написать.
     
  15. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Solker, сори, обязательно на Perl
     
  16. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    $p01nt, попробуй вот этот код.
    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    open my $F, '<', '05.txt';
    my $text = join '', <$F>;
    
    $text =~ s/\n{2}/\$\$\$/g;
    
    $text =~ s/\n/ /g;
    $text =~ s/:[^\.]+\./\,/g;
    $text =~ s/\d+//g;
    $text =~ s/[\,\;]/\|/g;
    $text =~ s/\s(v|n|adj|pron|num|adv|prep|conj)\.\s/\|/g;
    $text =~ s/\|\s+/\|/g;
    $text =~ s/\$\$\$/\n/g;
    $text =~ s/\s*\|\s*$//g;
    print $text, "\n";
    
    Но код имеет ограничения. Первое - если идет подряд несколько примеров, то вырезается только первый (регулярка s/:([^\.]+\.)+/\,/g не помогла). Второе - надо в строке
    Code:
    $text =~ s/\s(v|n|adj|pron|num|adv|prep|conj)\.\s/\|/g;
    перечислить все части речи, встречающиеся в файле. Третье - строка
    видимо съехала с родного места, такие надо поднимать к соответствующему слову на родину.
    ЗЫ. Больше моск уже не работает =/
     
    #796 krypt3r, 25 Nov 2008
    Last edited: 25 Nov 2008
  17. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Опять я с тупыми вопросами :) Теперь у мну не работает парсер.

    Code:
    #Обьявление необходимых модулей
    use warnings;
    use LWP 5.64;
    use encoding "cp1251";
    
    #Создаем "броузер" и обьявляем переменные
     $urlWnews='http://www.kinopoisk.ru/level/2/page/';
     $newsview='http://www.kinopoisk.ru/level/2/news/';
     $numbOnpage=5;
     $parsWpage=2;
    
     $browser = LWP::UserAgent->new;
     $browser->agent('Mozilla/4.76 [en] (Win98; U)');
    #Узнаем номер новостей на каждой странице
    $sr=1;$i=0;
    while($parsWpage > $sr){
    $urlWnews="http://www.kinopoisk.ru/level/2/page/" . "$sr";
    print "Parsim $urlWnews\n";
    while($numbOnpage > $i) {
    $response=$browser->get($urlWnews) or die ("DIE!");
    $response=$response->as_string;
    @ms=$response=~m/<a href="\/level\/2\/news\/(.*)\/" class="continue">/ig;
    print $ms[$i] . "\n";
    $i++;
    }
    $i=0;
    $sr++;
    }
    
    #Самый чоткий момент, вытаскиваем новости! #Помочь тут :))
    $i=0;$max=$#ms;
    while($max > $i){
    $newsview .= $ms[$i];
    $response=$browser->get($newsview) or die ("DIE!");
    $response=$response->as_string;
    @titl=$response=~m/<title>(.*)<\/title>/ig;
    $titl[$i] .= '.txt';
    @text=$response=~m/<tr><td style="padding-top:10px;padding-bottom:20px" colspan=2 class="news">[^\.]<td><\/tr>/ig; # ВОт тут не получается
    open(FF,">$titl[$i]");
    print FF $text;
    close(FF);
    }
    
    Cобственно говоря все до парсинга самой новости работает. А вот с последним проблемы, помогите плз!
     
    #797 $p01nt, 25 Nov 2008
    Last edited: 25 Nov 2008
  18. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    на, держи
    Code:
    #Обьявление необходимых модулей
    use warnings;
    use LWP 5.64;
    use encoding "cp1251";
    
    
    #Создаем "броузер" и обьявляем переменные
     $urlWnews='http://www.kinopoisk.ru/level/2/page/';
     $newsview='http://www.kinopoisk.ru/level/2/news/';
     $numbOnpage=5;
     $parsWpage=2;
    
     $browser = LWP::UserAgent->new;
     $browser->agent('Mozilla/4.76 [en] (Win98; U)');
    #Узнаем номер новостей на каждой странице
    $sr=1;$i=0;
    while($parsWpage > $sr){
    $urlWnews="http://www.kinopoisk.ru/level/2/page/" . "$sr";
    print "Parsim $urlWnews\n";
    while($numbOnpage > $i) {
    $response=$browser->get($urlWnews) or die ("DIE!");
    $response=$response->as_string;
    @ms=$response=~m/<a href="\/level\/2\/news\/(.*)\/" class="continue">/ig;
    print $ms[$i] . "\n";
    $i++;
    }
    $i=0;
    $sr++;
    }
    
    #Самый чоткий момент, вытаскиваем новости! #Помочь тут :))
    $i=0;$max=$#ms;
    while($max > $i){
    $newsview_temp = $newsview . $ms[$i];
    #^^^^^^^бага воз хир!!
    $response=$browser->get($newsview_temp) or die ("DIE!");
    $response=$response->as_string;
    @titl=$response=~m/<title>(.*)<\/title>/i;
    @text=$response=~m/<td style="padding-top:10px;padding-bottom:20px" colspan=2 class="news">(.*?)<td>/is; # ВОт тут не получается
    #^^^^^^^анд хир
    #::какбэ trim
    $text[0] =~ s/^\s*(.*?)\s*$/$1/s;
    open(FF,">$titl[0].txt");
    #^^^^^^^анд хир
    print FF $text[0];
    #^^^^^^^анд хир
    close(FF);
    $i++;
    #^^^^^^^анд хир;)
    }
    с именами файлов фигня, предлогаю как имя файла использовать айди.
     
  19. ZiLiBoBa

    ZiLiBoBa Active Member

    Joined:
    11 Nov 2008
    Messages:
    39
    Likes Received:
    108
    Reputations:
    1
    Чуваки помогите пожалуйс вопрос немного не по теме,но надо очень срочно!!!

    найти наибольший элемент каждой строки мытрицы А(4;6) и записать их в массив Y
    при заданных массивах X(10)-абсцисс,Y(10)-ординат точек плоскости XOY,подсчиатть,сколько из них находится в пределах круга с заданным радиусом Р и центром в начале координаь (0;0)........пож напишите ответ в асю 446644218...очень срочно надо!!!
     
  20. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Гы, ну еси на перле то типа:
    Code:
    use warnings;
    
    while(<>) {eval $_}
    
    sub radius {
    @x = (); for(0..9) {print $x[$_] = int(rand(100)); print"|"} print "\n";
    @y = (); for(0..9) {print $y[$_] = int(rand(100)); print"|"} print "\n";
    
    
    print "R-?\n";
    $R = <>;
    $D = 0;
    for(0..9) {($x[$_] < $R && $y[$_] < $R) ? (++$D) : ();}
    
    print "Dots in radius: ".$D;
    }
    
    
    sub matrix {
    @data = ();
    
    	for my $x(0..3) {
    		for my $y(0..5) {
    			print $data[$x][$y] = int(rand(100))."  ";
    		}
    		print "\n";
    	}
    
    print "\n";
    
    	for my $x(0..3) {
    		$max = $data[$x][0];
    		for my $y(0..5) {
    			($max < $data[$x][$y]) ? ($max = $data[$x][$y]) : ();
    		}
    		print "Line $x maximum - $max\n";
    	}
    }
    
     
    _________________________
    1 person likes this.
Thread Status:
Not open for further replies.