Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > поиск


Автор: Mlix 11.4.2007, 23:24
здравствуйте, помогите пожалуйста решить проблему

Код

#!usr/bin/perl -w
$text = "text.txt";

 open(TEXT,"$text");

 @text = <TEXT>; 

if ($msg =~ /^:(\S+)!(\S+)\@(\S+)\sNOTHING\s(\S+)\s:(\S.*)/ ) {

$end=grep /^$5$/, @text;
 
 if ($end==1) {
print "ok";


}
 }


почему-то, не ищется через grep...в чем может быть проблема?

Автор: korob2001 11.4.2007, 23:32
Приведи несколко строк из файла и что пытаешься найти.

Автор: nitr 11.4.2007, 23:33
контекст понятен...
Код

my @text = qw(hello vasya vasyap pupkin);
my $end = grep /^vasya$/, @text;
 
if ($end == 1) {
  print "ok";
}

так что думаю надо ответить на вопрос многоуважаемого korob2001 smile 

Автор: Mlix 12.4.2007, 10:46
вообщем, я пишу ирк-бота, когда поступает мессага, которая тут имеет значение $5, бот должен прочитать мессагу и найти ее в массиве.

2korob2001
ну например:
hello
re

2nitr
мессаги разные
поэтому надо замутить именно с $5

извиняюсь, что сразу не описал полностью проблему

Автор: nitr 12.4.2007, 11:14
Mlix, думаю у тебя просто $5 "пустое", я показал код, что должно работать, если $5 реально != ''
А ещё совет использовать модули, они полностью описывают и работают с протоколом IRC - смотрите
http://search.cpan.org/search?query=IRC&mode=module
там и боты уже готовые есть, достаточно настроить и "сказать что ему делать" ;)

Автор: Mlix 12.4.2007, 11:34
да не, в этом то и хрень, $5 полное, когда пишу print "$5" или $irc->send("PRIVMSG $chan :$5\r\n"), мне возвращается моя мессага...
спасибо, я знаю, просто хочется самому реализовать smile

Автор: nitr 12.4.2007, 11:47
test.pl
Код
#!/usr/bin/perl
use strict;
use warnings;

my $textfile = 'text.txt';
my @text;

open my $flh, "< $textfile";
@text = <$flh>;
close $flh;

my $msg = ':user!user@user NOTHING chan :hello'; #приведи точное значение :)

if ( $msg =~ /^:(\S+)!(\S+)\@(\S+)\sNOTHING\s(\S+)\s:(\S.*)/ ) {
    my $end = grep /^$5$/, @text;

    if ($end == 1) {
        print "ok";
    }
}

text.txt
Цитата
hello vasya
re
hello
world

Результат smile
Цитата
D:\>test.pl
ok
D:\>

Автор: tishaishii 12.4.2007, 11:58
v1.1:
Код
my$v5=$5;

v1.2:
Код
$str=~m{\Q$v5\E}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)