Наиболее распространенным решением является Regexp :: Common (без каламбура).Вам нужно использовать {-keep}
версию, как показано ниже, чтобы сохранить совпадение (очевидно, в $1
)
use Regexp::Common qw /URI/;
while (<>) {
/$RE{URI}{HTTP}{-keep}/ and print "<A HREF="$1">My Link Name</A>";
}
Как мы надеемся, приведенный выше пример находит только 1 ссылку на строку.Исправление для more оставлено как упражнение для пользователя.
Другой вариант - Schwern's URI :: Find .Из примера POD:
<code>use CGI qw(escapeHTML);
use URI::Find;
my $finder = URI::Find->new(sub {
my($uri, $orig_uri) = @_;
return qq|<a href="$uri">$orig_uri</a>|;
});
$finder->find(\$text, \&escapeHTML);
print "<pre>$text
";