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

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

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

    demond Member

    Joined:
    5 Nov 2008
    Messages:
    101
    Likes Received:
    22
    Reputations:
    5
    пробовал просто выводить содержимое страниц? Навигация вообще происходит или он дальше 1-й страницы не идет?
    Может имеет смысл еще раз логинется перед получением новой страницы?
     
  2. ph1l1ster

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

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    demond, с этим разобрался, невнимательность)

    далее:

    опять с куками, беру url из списка и перехожу по ней, выдазит ошибка:

    Code:
    Can't call method "scheme" on an undefined value at C:/Perl/lib/HTTP/Cookies.pm line 44, <URLS> line 71.
    Code:
    sub next{
    open(A, ">>a.txt");
    open(URLS, "urls.txt");
    @urlo = <URLS>;
    $client = LWP::UserAgent->new( ) or die;
    $client->agent('Opera/9.0 (Windows NT 5.1; U; en; (R1 1.5))');
    $client->cookie_jar( $cookie_jarr ); 
    $answer = $client->get($urlo);
    foreach $urlo (@urlo) 
    {@qwerty = $answer->content =~ /(.*)/g;}
    print A join "\n", @qwerty;}
    а если поодной url типа $answer = $client->get($urlo[1]);

    то всё норм! где ошибка?? :)
     
  3. roddik

    roddik Member

    Joined:
    14 Jan 2009
    Messages:
    117
    Likes Received:
    13
    Reputations:
    0
    $answer = $client->get($urlo); - а где вообще задана переменная $urlo ? и цикл зачем? просто вывести контент н раз?

    упд: попробуй strict + warnings

    упд2:
    Code:
    foreach $urlo (@urlo) 
    { $answer = $client->get($urlo);
    @qwerty = $answer->content =~ /(.*)/g;
    print A join "\n", @qwerty;
    }
    }
     
    #1063 roddik, 2 May 2009
    Last edited: 2 May 2009
  4. .:[Dumi]:.

    .:[Dumi]:. Banned

    Joined:
    29 Apr 2009
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    лолло
     
  5. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Мде, ну и код
    Code:
    #!/usr/bin/perl
    use strict;
    use warnings;
    use diagnostics;
    
    sub next {
      open(A, ">>a.txt");
      # Принято использовать вид open my $A, '>>', 'a.txt' or die "open() error: $!\n";
      
      open(URLS, "urls.txt");
      # open my $URLS, '<', 'urls.txt' or die "Shit, an error: $!\n!";
      
      @urlo = <URLS>;
      $client = LWP::UserAgent->new( ) or die;
      $client->agent('Opera/9.0 (Windows NT 5.1; U; en; (R1 1.5))');
      $client->cookie_jar( $cookie_jarr ); 
      $answer = $client->get($urlo);
      # А не будет ли тут Undefined переменной? $urlo не есть @urlo, также не есть его элемент
      foreach $urlo (@urlo) {
        @qwerty = $answer->content =~ /(.*)/g;
      }
      # тут вообще я упал и не могу встать, массив @qwerty при каждом проходе цикла переписывается. Зачем? Что вообще хотелось получить этой регуляркой?
      
      print A join "\n", @qwerty;
      
      # А файлы принято закрывать. close $URLS; close $A;
    }
    
    Это вообще должно быть в любом скрипте.
     
  6. Amoura

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

    Joined:
    23 Jan 2008
    Messages:
    237
    Likes Received:
    148
    Reputations:
    46
    По ходу чтения книги, наткнулся на такую вешь. При запуске программы вылетает ошибка. Вот сам код:

    Code:
    !#usr/bin/perl -w
    
    $im_thinking_of=int(rand10);
    print "Введите число от 0 до 9:";
    $guess=<STDIN>;
    chomp $guess;
    
    
    if ($guess > $im_thinking_of) {
           print "Перебор!\n";
            } elsif ($guess < $im_thinking_of) {
    		print "Недобор!\n";
            } else {
    		print "Вы угадали!\n";
    }
    Текст ошибки:
    Code:
    Can't modify not in scalar assignment at C:\programs\game.pl line 3, near ");"
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Восклицательный знак не туда поставил в первой строке
     
    _________________________
  8. Amoura

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

    Joined:
    23 Jan 2008
    Messages:
    237
    Likes Received:
    148
    Reputations:
    46
    Еще такой вопрос. Когда запускаю скрипт на выполнение через командную строку, русский язык коряво отображается, как сделать, чтобы нормально отображался.
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Сменить кодировку всего скрипта
     
  10. ph1l1ster

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

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    общий вопрос, к перлу не относящийся.

    русик xterm
    Code:
    http://www.google.com/search?hl=ru&client=opera&rls=ru&hs=Dfw&num=100&q=%D1%80%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+xterm&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
    Code:
    http://www.google.com/search?hl=ru&client=opera&rls=ru&hs=Sfw&num=100&q=%D1%80%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
    консоль винды:
    Code:
    http://www.google.com/search?client=opera&rls=ru&q=%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9+%D1%8F%D0%B7%D1%8B%D0%BA+%D0%B2+%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8+windows&sourceid=opera&ie=utf-8&oe=utf-8
     
    1 person likes this.
  11. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Code:
    sub cyr
    {
    	($_)=@_;
    	y/А-яЁё/\x80-\xaf\xe0-\xf1/;
    	return $_;
    }
    
     
    _________________________
    1 person likes this.
  12. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    как из страницы полученной через LWP выдрать ВСЕ значения найденные регуляркой
     
  13. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    @array = $response =~ /anything/g;
     
    _________________________
    3 people like this.
  14. Amoura

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

    Joined:
    23 Jan 2008
    Messages:
    237
    Likes Received:
    148
    Reputations:
    46
    такой вот вопрос.

    Как извлечь все слова из каждой строки?


    Code:
    #!usr/bin/perl -w
    
    open(WORD, "C:/programs/word.txt") || die "$!"; # открываем файл
    @word=<WORD>; # считываем строки в массив
    chomp @word;
    close(WORD);
    
    
    
    $_/\do+g/;
    @word=grep length{$_}>4, @words; # поиск слов
    chomp @words;
    
    open(WORDS, ">C:/programs/words.txt") || die "$!";    # запись слов в новый файл
    if (! Print WORDS "Запись сделана ", @words, "\n") {
    	warn "Ошибка при записи в файл words: $!";
    }
    Close(WORDS);
     
  15. roddik

    roddik Member

    Joined:
    14 Jan 2009
    Messages:
    117
    Likes Received:
    13
    Reputations:
    0
    Code:
    open(WORD, "C:/programs/word.txt") || die "$!"; # открываем файл
    my $word = join '', <WORD>;
    close WORD;
    
    my @words = $word =~  /(\w{5,})/g; # поиск слов
    open(WORDS, ">C:/programs/words.txt") || die "$!";
    print WORDS join("\n", @words);
    close WORDS;
     
    #1075 roddik, 9 May 2009
    Last edited: 9 May 2009
    1 person likes this.
  16. hors_de_prix

    hors_de_prix Banned

    Joined:
    10 May 2009
    Messages:
    36
    Likes Received:
    5
    Reputations:
    0
    Я в перл новичек (мало что понимаю ,помогите пожалусто )

    Я достал недавно Граббер на pl
    и в приложении был парсер но этот парсер не дописан . Помогите дописать скрипт . (при клике дает ошибку)

    вот :

    #!/usr/bin/perl
    print "===================================\n";
    print "=SQL-injection Parser =\n";
    print "===================================\n";

    open(TT, 'C:\Perl\result.txt');
    open(F, '>C:\Perl\result2.txt');
    while ($line = <TT>)
    {
    $x=index($line, "^");
    $z=rindex($line, "^" );
    if($x>-1 && $z>-1){
    $long=$z-$x;
    $res=substr($line, ($x+1), ($long-1)
    print F $res. "\n";
    $x=-1;
    $z=-1;
    }
    }
    print "===================================\n";
    print "= DONE =\n";
    print "===================================\n";
    close TT;
    close F;
     
  17. Amoura

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

    Joined:
    23 Jan 2008
    Messages:
    237
    Likes Received:
    148
    Reputations:
    46

    $res=substr($line, ($x+1), ($long-1) в конце поставь ); чтобы получилось так:
    $res=substr($line, ($x+1), ($long-1));
     
    1 person likes this.
  18. hors_de_prix

    hors_de_prix Banned

    Joined:
    10 May 2009
    Messages:
    36
    Likes Received:
    5
    Reputations:
    0
    Спасибо

    Огромное спасибо ! Я даже и не знал что ошибка в закрытие .
     
    1 person likes this.
  19. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Маленькиие вопросики:

    1.Недавно занимался пхп.Не повредит ли изучение Perl уже заложенным основам РНР(Непривычно,брр).

    2.Без применения chomp() проверки всегда оказываются *левыми*,хотя я и не вбивал пробельных символов. Почему ?

    ЗЫ: Благодарен за любые ответы по делу.Спасибо)
     
  20. eLWAux

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

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    1. нет. главное - желание
    2. перенос строки
    3. ой)
     
    2 people like this.
Thread Status:
Not open for further replies.