将查询字符串转换为散列Perl

将查询字符串转换为散列Perl,perl,hash,uri,Perl,Hash,Uri,我想知道如何做与此相反的事情: 我有一个字符串化的查询字符串表单,希望将其转换为哈希 有了更多的上下文,客户机将一些URL参数作为一个字符串化的查询表单传递,该表单是base64编码的,我想解码,转换成散列,向散列添加更多的自定义URL参数,然后我有了一个已经转换回字符串并附加到URL的方法 my $uriQuery = URI::Query->new($redirectQueryParams); $qs = $uriQuery->hash; 似乎要爆炸了 无法通过包“URI::

我想知道如何做与此相反的事情:

我有一个字符串化的查询字符串表单,希望将其转换为哈希

有了更多的上下文,客户机将一些URL参数作为一个字符串化的查询表单传递,该表单是base64编码的,我想解码,转换成散列,向散列添加更多的自定义URL参数,然后我有了一个已经转换回字符串并附加到URL的方法

my $uriQuery = URI::Query->new($redirectQueryParams);
$qs = $uriQuery->hash;
似乎要爆炸了

无法通过包“URI::Query”定位对象方法“new”

该模块与drop-in插件结合使用,可以实现您想要的功能

use strict;
use warnings;

use URI;
use URI::QueryParam;

my $uri = URI->new('https://example.org/?foo=bar&baz=qrr');
$uri->query_param_append(frobnication => 'yes, please');

print $uri;
这会打印出来

https://example.org/?foo=bar&baz=qrr&frobnication=yes%2C+please
如果你真的想要散列,你可以打电话

但是,考虑到您所能想到的所有更改都已经实现,这没有多大意义。

模块与drop-in插件结合使用可以实现您想要的功能

use strict;
use warnings;

use URI;
use URI::QueryParam;

my $uri = URI->new('https://example.org/?foo=bar&baz=qrr');
$uri->query_param_append(frobnication => 'yes, please');

print $uri;
这会打印出来

https://example.org/?foo=bar&baz=qrr&frobnication=yes%2C+please
如果你真的想要散列,你可以打电话


然而,考虑到您所能想到的所有更改都已经实施,这没有多大意义。

您尝试过什么?你有什么问题?给我们看看你的代码。如果您没有任何代码,那么堆栈溢出可能不是解决问题的最佳位置。通过快速搜索CPAN可以轻松解决这一问题。请至少包括您的查询字符串,以便我们知道您在说什么$qs=$uriQuery->hash;似乎是因为无法通过包“URI::Query”找到对象方法“new”而崩溃,这是怎么不起作用的?您已经列出了需要采取的步骤。你到底需要帮助哪一个?当然,您不希望我们为您做所有的工作。似乎由于某种原因,URI::Query模块不存在,所以认为可能有另一种方法来实现这一点。您尝试了什么?你有什么问题?给我们看看你的代码。如果您没有任何代码,那么堆栈溢出可能不是解决问题的最佳位置。通过快速搜索CPAN可以轻松解决这一问题。请至少包括您的查询字符串,以便我们知道您在说什么$qs=$uriQuery->hash;似乎是因为无法通过包“URI::Query”找到对象方法“new”而崩溃,这是怎么不起作用的?您已经列出了需要采取的步骤。你到底需要帮助哪一个?当然,您不希望我们为您做所有的工作。似乎由于某种原因,URI::Query模块不存在,所以认为可能有另一种方法来实现这一点。我感谢您的回答,但这与我需要的正好相反。我只想将一个查询字符串转换成一个散列,向散列中添加更多的项,然后使用-转换回查询。因此输入应该是:foo=bar&baz=qrr,输出:$data={'foo'=>'bar','baz'=>'qrr',};然后我可以添加:$data->{more}='yes';使用:$url->query\u表单(%$data)转换回查询@蛇潘我明白。但我是说你不需要。本模块已为您完成所有工作。看看我的编辑,如果你真的需要,你可以自己做这些艰苦的工作。我很感激你的回答,但这与我需要的正好相反。我只想将一个查询字符串转换成一个散列,向散列中添加更多的项,然后使用-转换回查询。因此输入应该是:foo=bar&baz=qrr,输出:$data={'foo'=>'bar','baz'=>'qrr',};然后我可以添加:$data->{more}='yes';使用:$url->query\u表单(%$data)转换回查询@蛇潘我明白。但我是说你不需要。本模块已为您完成所有工作。如果您真的需要,请参阅我的编辑,了解如何自己完成这项艰巨的工作。