2017-10-18 120 views
0

我想找出如何做到這相反:打開查詢字符串成散列Perl的

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 ::查詢」

+2

你有什麼到目前爲止已經試過? –

+0

你試過了什麼?你有什麼問題?告訴我們你的代碼。如果您沒有任何代碼,那麼堆棧溢出可能不是您問題的最佳位置。 –

+0

這可以通過快速搜索CPAN輕鬆解決。並且請至少包含您的查詢字符串,以便我們知道您在說什麼。 – simbabque

回答

2

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 

但是,考慮到您所能想到的所有更改都已經實施,這沒有多大意義。

+0

我很欣賞答案,但這與我所需要的相反。我只想將查詢字符串轉換爲散列,向散列中添加更多項目然後使用 - https://stackoverflow.com/questions/30281332/perl-how-can-i-turn-a-hash-into -a-query-string將其轉換回查詢。 所以輸入應該是: 富=欄&巴茲= QRR 和輸出: $數據= { '富'=> '酒吧', '巴茲'=> 'QRR', }; 我可以再添加: $ data - > {more} ='yes'; 轉換回查詢使用: $ url-> query_form(%$ data); – snakespan

+1

@snakespan我明白這一點。但我說你不需要。這個模塊已經爲你做了所有的工作。如果您真的需要,請參閱我的編輯,瞭解如何自己完成工作。 – simbabque