Die häufigste Lösung ist Regexp::Common (kein Wortspiel beabsichtigt). Sie müssen verwenden {-keep}
Version wie unten gezeigt, um die Übereinstimmung zu erhalten (in $1
)
use Regexp::Common qw /URI/;
while (<>) {
/$RE{URI}{HTTP}{-keep}/ and print "<A HREF="$1">My Link Name</A>";
}
Wie hoffentlich offensichtlich ist, findet das obige Beispiel nur 1 Link pro Zeile. Die Suche nach weiteren Links wird als Übung für den Benutzer belassen.
Eine weitere Möglichkeit ist Schwerns URI::Find . Aus dem POD-Beispiel:
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</pre>";