Только вот я не понял, где хранится текст???? Вот припмер с массивом строк, если нужно работать с файлами и не сможешь подправить сам, дай знать:
| Код | #!/usr/bin/perl -w use strict; my $i = 0; my @arr; my @strs = qw( fdfddsfsddv.cgi?id=814fdfdfdfdfdf.cgi?id=102fdfdfdfdf.cgi?id=21 fdfddsfsddv.cgi?id=190fdfdfdfdfdf.cgi?id=511fdfdfdfdf.cgi?id=47 fdfddsfsddv.cgi?id=214fdfdfdfdfdf.cgi?id=707fdfdfdfdf.cgi?id=82 fdfddsfsddv.cgi?id=234fdfdfdfdfdf.cgi?id=331fdfdfdfdf.cgi?id=11 ); # Вот так выглядит наш массив до обработки print join("\n", @strs), "\n\n"; print "=" x 70, "\n\n";
# Обрабатываем массив foreach my $str ( @strs ) { push( @arr, $1 ) while $str =~ s/\.cgi\?id=(\d+)/"#pic_" . $i++ . "#"/ei; }
# Покажем массив после обработки print join("\n", @strs), "\n"; print "-" x 70, "\n"; print "\@arr = " . join(", ", @arr), "\n";
print "\n\n"; print "=" x 70, "\n\n";
# А вот обратное преобразование foreach my $str ( @strs ) { $str =~ s/\#pic_(\d+)\#/.cgi?id=$arr[$1]/ig; } # Покажем массив после обратной обработки print join("\n", @strs), "\n";
|
Здесь показана замена как в одну сторону, так и в другую. ;)))))
Удачи. |