在文本中寻找 URI 地址
Category: Modules Keywords: uri find
我们经常碰到这样的任务,在一段文本中找到 URL/URI 地址,然后让这个地址变为可以点击。最寻常的方法就是用正则表达式来做。不过有时候这不是很理想。
CPAN 中有一个 URI::Find 模块专门来做这事。实例代码如下:
#!/usr/bin/perl这样 $text 的输出会变为:
use strict;
use warnings;use URI::Find;
my $text = <<HTML;
hi, it's from http://www.fayland.org/ then 1313s.com?
HTMLmy $finder = URI::Find->new(
sub {
my($uri, $orig_uri) = @_;
return qq|<a href="$uri">$orig_uri</a>|;
});
$finder->find(/$text);print $text;
hi, it's from <a href="http://www.fayland.org/">http://www.fayland.org/</a> then如果想让 1313s.com 也变为可点击,则可以使用 URI::Find::Schemeless
1313s.com?
#!/usr/bin/perlSchemeless 的意思就是没有协议头(如 http )也匹配。
use strict;
use warnings;use URI::Find::Schemeless;
my $text = <<HTML;
hi, it's from http://www.fayland.org/ then 1313s.com?
HTMLmy $finder = URI::Find::Schemeless->new(
sub {
my($uri, $orig_uri) = @_;
return qq|<a href="$uri">$orig_uri</a>|;
});
$finder->find(/$text);print $text;
$text 变为:
hi, it's from <a href="http://www.fayland.org/">http://www.fayland.org/</a> the大致如是。详细的查阅 URI::Find , have fun!
<a href="http://1313s.com/">1313s.com</a>?