【问题标题】:Turn Query String into Hash Perl将查询字符串转换为哈希 Perl
【发布时间】:2017-10-18 14:10:51
【问题描述】:

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

Perl - How can I turn a hash into a query string?

我有一个字符串化的查询字符串形式,想将其转换为哈希。

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

my $uriQuery = URI::Query->new($redirectQueryParams);
$qs = $uriQuery->hash;

好像炸了

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

【问题讨论】:

  • 你试过什么?你有什么问题?向我们展示您的代码。如果您没有任何代码,那么 Stack Overflow 可能不是您提出问题的最佳地点。
  • 这很容易通过快速搜索 CPAN 来解决。请至少包含您的查询字符串,以便我们知道您在说什么。
  • 我的 $uriQuery = URI::Query->new($redirectQueryParams); $qs = $uriQuery->哈希;似乎无法通过包“URI::Query”找到对象方法“new”
  • 那怎么行不通?您已经列出了需要采取的步骤。您究竟需要哪些帮助?当然,您不希望我们为您完成所有工作。
  • 似乎 URI::Query 模块由于某种原因不存在,所以认为可能有另一种方法来解决这个问题。

标签: perl hash uri


【解决方案1】:

URI 模块与插入式插件URI::QueryParams 结合使用可以做你想做的事。

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

如果你真的想要一个哈希,你可以打电话给the query_form_hash method

$uri->query_form_hash

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

【讨论】:

  • 我很欣赏这个答案,但这与我所需要的相反。我只想将查询字符串转换为哈希,向哈希添加更多项目,然后使用 -stackoverflow.com/questions/30281332/… 转换回查询。所以输入应该是: foo=bar&baz=qrr 和输出: $data = { 'foo' => 'bar', 'baz' => 'qrr', };然后我可以添加: $data->{more} = 'yes';转换回查询使用:$url->query_form(%$data);
  • @snakespan 我明白这一点。但我说你不需要。该模块已经为您完成了所有工作。如果您真的需要,请参阅我的编辑,了解如何自己完成艰苦的工作。
猜你喜欢
  • 2020-01-02
  • 1970-01-01
  • 2017-01-06
  • 2019-03-07
  • 2015-07-10
  • 2016-10-21
  • 1970-01-01
  • 2010-09-21
  • 2013-02-12
相关资源
最近更新 更多