当我转换$url
这样的$url = URI->new( $url )
时,我能获得什么吗?
#!/usr/bin/env perl
use warnings; use strict;
use 5.012;
use URI;
use XML::LibXML;
my $url = 'http://stackoverflow.com/';
$url = URI->new( $url );
my $doc = XML::LibXML->load_html( location => $url, recover => 2 );
my @nodes = $doc->getElementsByTagName( 'a' );
say scalar @nodes;
答案 0 :(得分:4)
URI module constructor将为您清理URI - 例如,正确转义URI构造无效的字符(请参阅URI::Escape)。
答案 1 :(得分:3)
URI模块有以下好处:
您使用所显示的一小部分代码所带来的好处是微不足道的,但是当您继续处理该问题时,可能会抓住该网站,当您选择下一步做什么时,URI会变得更加方便。
答案 2 :(得分:1)
我很惊讶没人提到它,但是$url = URI->new( $url );
没有清理你的$url
并将它交给你,它会创建一个新的URI
对象(或者更确切地说,如果它的子类,则可以将其传递给需要URI
对象的其他代码。在这种情况下,这并不是特别重要,因为XML::LibXML
似乎很乐意接受位置作为字符串或对象,但是其他一些模块要求您为它们提供URI
对象,并拒绝以普通方式呈现的URL字符串。