2

我对 perl 很陌生,并编写了一个使用 LWP 从页面中提取链接的小脚本,结果被解码为这种格式:

http://www.perlmonks.org/%3fnode_id%3d376075

而不是:

http://www.perlmonks.org/?node_id=376075

我不熟悉那种语法......它叫什么?有没有简单的方法可以将其翻译回来?

4

2 回答 2

1
http://www.perlmonks.org/%3fnode_id%3d376075

http://www.perlmonks.org/?node_id=376075

不是等效的 URL。应用于uri_unescapeurl 永远不会正确。它应该只用于提取的组件。第一个访问一个名为?node_id=376075. 第二个访问默认文件(恰好是index.pl)并传递一个名为的 argnode_id给它。

也许你实际上有类似的东西

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
于 2013-02-02T00:23:18.067 回答
0

这就是URL 编码的实际应用。

有几个 perl 库可以帮助解码,反之亦然。这是在快速搜索中弹出的一个:http ://www.perlhowto.com/encode_and_decode_url_strings

于 2013-02-02T00:15:12.717 回答