Forum Webscript.Ru

Программирование => Perl => Тема начата: Satell от 04 Июля 2007, 20:40:27

Название: Поиск и замена ссылок
Отправлено: Satell от 04 Июля 2007, 20:40:27
$pagetext=текст html документа;
@links=массив ссылок;
@images=массив ссылок на картинки;

нужно заменить все теги  в документе $pagetext на теги с ссылками из массива @links в случайном порядке
и все теги на картинки из массива @images в случайном порядке, как это сделать?

вот например код который меняет, но во всём документе сразу и только на одну ссылку, а надо чтобы было много разных, можно ли сделать что-то типа find next, чтобы при каждом запуске оператора s/ / он находил следующую ссылку


$randout=$links[rand @links];
$randimg=$images[rand @images];
$pagetext =~ s/href=\\".*\\"/href=\\"$randout\\"/gi;
$pagetext =~ s///gi;
Название: Поиск и замена ссылок
Отправлено: arto от 04 Июля 2007, 22:37:59
$pagetext =~ s/<(a|img)\\s+(?:href|src)=".+?"(.+?)>/randout($1,$2)/gismee;

sub randout ($$) {
  if ($_[0] eq "a") {
    return sprintf "",$links[random(@links)],$_[1];
  }
  else {
    return sprintf "",$images[random(@images)],$_[1];
  }
}

примерно