/) {
$next = \'1\';
}
if ($_ =~ /\\<\\/div\\>/) {
$next = \'0\';
}
if ($next == \'1\') {
if ($_ =~ /\\
/) {
$\' =~ /\\<\\/a\\>/;
$text = $text . $` . "\\n";
}
}
}
print "Content-type: text/html\\n\\n";
print $text;
undef $/;
$data=;
sub word
{
my ($data,$first_tag,$second_tag,$sd,@r) = @_;
while($data =~ m#<$first_tag[^<>]*>(.+?)$first_tag>#isg)
{
$d=$1;
while($d =~ m#<$second_tag[^<>]*>(.+?)$second_tag>#isg)
{
push @r,$1;
}
}
return @r;
}
######################################
print word($data,\'div\',\'a\');
######################################
__DATA__
......
Ребят зачем такие извращения?
Можно сделать так
....
$aa = ($html=~/([^<]+)
/g);
$aa = ($aa=~/([^<]+)/g);
и получаем ссылку на нужный массив. Но просто хотелось бы в одну строку это все втулить. :)
здается мне что эти 2 строки выполняют поиск с заменой... поправь если ошибся.
а в моем примере изврата нету... единственное отличие от твоего в том что в моем примере значение "подопытной" переменной берется из файла и записывается в массив и поэтому foreach...
09h:
здается мне что эти 2 строки выполняют поиск с заменой... поправь если ошибся.
Да ты ошибаешься. Тут нет не какого поиска с заменой есть просто поиск. Где там стоит ...=~s///?
В твоем примере я бы сделал так (просто очень уж больно навороченная конструкция):
#!/usr/bin/perl -wT
$log = "./tt.txt";
open (LOG, "<$log") || Error(\'open\', \'file\');
my @data = ;
close (LOG);
my $data = join(\'\',@data);
my $aa = ($data=~/([^<]+)
/g);
$aa = ($aa=~/([^<]+)/g);
Согласись намного короче и намного понетней?
AlekseyD, мне кажется, Вы сами себе ставите задачу.
Страница для распарсивания не Ваша?
NeoNox:
AlekseyD, мне кажется, Вы сами себе ставите задачу.
Страница для распарсивания не Ваша?
Да не моя. А это как то меняет дело?
AlekseyD, так мы получим не ссылку на масив, а кол-во элементов, да не о том речь. Вам респект за знание регекспов и что-то противоположное за понимание логики их исполнения.
Не буду мудрствовать, только скажу, что одним регекспом обойтись можно, но не нужно. Поберегите ресурсы. Расчленяем это дело на два регекспа и исполняется в 5-10 раз быстрее. Можно расчленить еще, но это уже будет невозможно читать, так что ограничтесь двумя.
P.S. Судя по всему вы только с Питона? :)
Zerokool:
P.S. Судя по всему вы только с Питона?
Нет я с Perl. Посто я очень люблю когда все красиво и в одной строке. (хотя бывает конечно перумудрю. :) ) А вообще все зависит от конкретной задачи. Я для себя поставил задачу что бы был как можно более компактный код. Со скоростью да я понимаю что так будет на много медленей работать. Но такой задачи я себе не ставил.