我对perl很新,并编写了一个小脚本,使用LWP从页面中提取链接,结果将被解码为以下格式:
http://www.perlmonks.org/%3fnode_id%3d376075
而不是:
http://www.perlmonks.org/?node_id=376075
我不熟悉那种语法......它叫什么?是否有一种简单的方法可以将其翻译回来?
答案 0 :(得分:1)
这是URL Encoding在行动。
有几个perl库可以帮助解码,反之亦然。以下是快速搜索中弹出的内容:http://www.perlhowto.com/encode_and_decode_url_strings
答案 1 :(得分:1)
http://www.perlmonks.org/%3fnode_id%3d376075
和
http://www.perlmonks.org/?node_id=376075
不是等效的网址。将uri_unescape
应用于网址永远不正确。它应该只用于提取的组件。第一个访问名为?node_id=376075
的文件。第二个访问默认文件(恰好是index.pl
)并将名为node_id
的arg传递给它。
也许你真的有像
这样的东西foo.cgi?redirect=http://www.perlmonks.org/%3fnode_id%3d376075
在这种情况下你想要URI。它既提取部件又解码它们。正常。
use URI qw( );
my $url = URI->new('foo.cgi?redirect=http://www.perlmonks.org/%3fnode_id%3d376075');
my %form = $url->query_form();
say $form{redirect}; # http://www.perlmonks.org/?node_id=376075