Thread Ersatz für URI::Find
(114 answers)
Opened by bianca at 2014-05-05 11:32 Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/usr/bin/perl use strict; use warnings; use lib 'lib'; use URI::Find::Schemeless; my $text = <<TXT; Hau doch mal den Gockel auf www.google.com, Oder nutze "google.de". Oder Google.com! TXT my $finder = URI::Find::Schemeless->new(sub { my($uri, $orig_uri) = @_; return "[$orig_uri]<$uri>"; }); $finder->find(\$text); print $text; Code: (dl
)
1 Hau doch mal den Gockel auf [www.google.com]<http://www.google.com/>, Oder nutze "google.de". Sieht so aus als ob das ! ond die " nicht als Trenner erkannt wird. mal schauen wie das Modul definiert, was ein Ende einer URI ist. //EDIT: neuere TLD Um solche mit mehr als zwei Zeichen (weiß nicht wie lang die maximal sein dürfen) zu erkennen, muss in Schemless.pm in der Methode top_level_domain_re folgendes Code (perl): (dl
)
return qr/(?:[a-z]{2}|$plain)/i; ersetzt werden durch Code (perl): (dl
)
return qr/(?:[a-z]{2,20}|$plain)/i; URI in Anführungszeichen Um URI in " zu erkennen muss in Methode schemeless_uri_re Code: (dl
)
(?: ^ | (?<=[\s<>()\{\}\[\]]) ) druch Code: (dl
)
(?: ^ | (?<=["\s<>()\{\}\[\]]) ) ersetzt werden. //EDIT2: Es muss eben definiert werden, welche Trennzeichen verwendet werden. Das Modul hat eben auch nur eine bestimmte Heuristik, was als Trenner oder URI-Ende dient. Last edited: 2014-06-29 11:05:59 +0200 (CEST) die Drachin, Gwendolyn
Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel |