[Perl] Извлечение текста

Discussion in 'PHP' started by apofis, 7 Apr 2010.

  1. apofis

    apofis New Member

    Joined:
    23 Feb 2009
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Приветсвую!

    Хочу спросить, можно ли как-нибудь извлечь текст?

    Например, как можно извлечь стих, отсюда?

    ASPuskin У лукоморья дуб зеленый;
    Златая цепь на дубе том:
    И днем и ночью кот ученый
    Все ходит по цепи кругом;
    Идет направо - песнь заводит,
    Налево - сказку говорит. end

    Т.е. нужно извлечь текст от "ASPuskin " до " end".
     
  2. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Регуляркой
    Code:
    $text =~ /ASPuskin (.+?) end/smi;
    
     
  3. apofis

    apofis New Member

    Joined:
    23 Feb 2009
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Ок, спасибо!
     
  4. apofis

    apofis New Member

    Joined:
    23 Feb 2009
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Есть еще один вопрос. Как можно извлечь этот же текст из файла, который, например называется stih.txt и находится в одной папке со скриптом?
     
  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 utf8;
    use open qw /:std :utf8/;
    
    $\ = "\n";
    die "wrong param count" unless scalar @ARGV == 1;
    open my $F, '<', $ARGV[0] or die "open() error: $!";
    my $text;
    $text .= $_ while <$F>;
    close $F;
    my ($stih) = $text =~ /ASPuskin (.+?) end/smi;
    print $stih;
    
    Имя файла передается скрипту как параметр
     
  6. apofis

    apofis New Member

    Joined:
    23 Feb 2009
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Не совсем понятен этот код.
    Ладно, задам другой вопрос:

    Как можно сделать чтобы переменная была равна массиву? Я например открываю файл, т.е. @stih - это содержимое текстового файла.

    Нужно сделать, чтобы $text = @stih, т.е. чтобы $text тоже содержал весь стих, чтобы потом из него потом уже извлечь то что нужно.
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Ну напиши $text = join "\n", @stih;
    Или читай содержимое файла по-другому...
     
    _________________________