#--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'%s','%s'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); my %uris; # eindeutigen temporären Ersetzungsstring finden my $kennung = 'X'; $kennung+=chr(int(65+rand(25))) while (index($kennung,$$text)>-1); my $uri_mod=eval "use URI::Find; 1;" || 0; my $mail_mod=0; $mail_mod=1 if($email_link ne '' && eval "use Email::Find; 1;"); if ($uri_mod) { my $lfd_uri = 0; my $finder = URI::Find -> new ( sub { # URI und geschriebenen Link speichern if($mail_mod) { my $origin=shift; my $text=shift; my $symbol_o=sprintf('%s%u',$kennung,++$lfd_uri); my $symbol_t=sprintf('%s%u',$kennung,++$lfd_uri); $uris{$symbol_o}=$origin; $uris{$symbol_t}=$text; return sprintf ($link,$symbol_o,$symbol_t); } else { return sprintf ($link,@_); } } ); $finder -> find ($text); } # E-Mail auch erwünscht? if ($mail_mod) { my $finder = Email::Find -> new ( sub { return sprintf ($email_link,$_[0] -> format,$_[1]); } ); $finder -> find ($text); $$text=~s/$_/$uris{$_}/g for(keys(%uris)); } } #--------#