%perl中链接中的3f和%3d

%perl中链接中的3f和%3d,perl,decoding,Perl,Decoding,我是perl新手,编写了一个小脚本,使用LWP从页面中提取链接,结果解码为以下格式: 而不是: 我不熟悉那个语法。。。它叫什么?有没有一种简单的方法可以把它翻译回去?这是一种有效的方法 有几个perl库可以帮助解码,反之亦然。以下是快速搜索中弹出的一个: 及 不是等效的URL。将uri\u unescape应用于url永远都是不正确的。它只能用于提取的组件。第一个访问名为?node_id=376075的文件。第二个访问默认文件(恰好是index.pl),并将名为node\u id的参数传递给

我是perl新手,编写了一个小脚本,使用LWP从页面中提取链接,结果解码为以下格式:

而不是:

我不熟悉那个语法。。。它叫什么?有没有一种简单的方法可以把它翻译回去?

这是一种有效的方法

有几个perl库可以帮助解码,反之亦然。以下是快速搜索中弹出的一个:

不是等效的URL。将
uri\u unescape
应用于url永远都是不正确的。它只能用于提取的组件。第一个访问名为
?node_id=376075
的文件。第二个访问默认文件(恰好是
index.pl
),并将名为
node\u 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

.使用URI::Escape$url=uri_unescape($url);--很好,谢谢。那是错的。您永远不能在url上使用
uri\u unescape
uri_unescape
只能在提取的组件上使用。虽然它工作正常,但当我使用它时它会吐出来?两个错误有时看起来像是对的。试穿一下
http://www.perlmonks.org/?node=%25data
,然后访问原始页面和新页面。
foo.cgi?redirect=http://www.perlmonks.org/%3fnode_id%3d376075
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