2017-10-18 16 views
0

Je veux savoir comment faire le contraire de ceci:Tournez la chaîne de requête dans Hash Perl

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

J'ai une forme de chaîne de requête qui est de chaîne de caractères et que vous souhaitez le convertir en un hachage. Avec plus de contexte, un client passe des paramètres d'URL sous la forme d'une requête stringifiée encodée en base64, et je voulais décoder, transformer en hash, ajouter d'autres paramètres d'URL personnalisés au hachage, puis j'ai un méthode qui convertit déjà en une chaîne et ajoute à l'URL.

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

Semble faire sauter avec

Impossible de localiser la méthode objet "nouveau" via package "Requête :: URI"

+2

Qu'avez-vous essayé jusqu'à présent? –

+0

Qu'avez-vous essayé? Quels problèmes avez-vous? Montrez-nous votre code. Si vous n'avez pas de code, Stack Overflow n'est probablement pas le meilleur endroit pour votre question. –

+0

Ceci est facilement résolu avec une recherche rapide de CPAN. Et veuillez au moins inclure votre chaîne de requête afin que nous sachions de quoi vous parlez. – simbabque

Répondre

2

Le module URI conjointement avec le goutte à dans addon URI::QueryParams peut faire ce que vous voulez.

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; 

Ce imprimera

https://example.org/?foo=bar&baz=qrr&frobnication=yes%2C+please 

Si vous avez réellement voulu un hachage, vous pouvez appeler the query_form_hash method. Cependant, cela n'a pas beaucoup de sens si l'on considère que toutes les modifications que vous pouvez imaginer sont déjà implémentées.

+0

J'apprécie la réponse, mais c'est le contraire de ce dont j'ai besoin. Je veux juste convertir une chaîne de requête dans un hachage, ajouter un peu plus d'éléments au hachage et ensuite utiliser - https://stackoverflow.com/questions/30281332/perl-how-can-i-turn-a-hash-into -a-query-string à convertir en une requête. l'entrée doit être: foo = bar & baz = QRR et la sortie: $ data = { 'foo' => 'bar', 'baz' => 'QRR', }; Je peux ensuite ajouter: $ data -> {more} = 'yes'; convertir de nouveau à la requête en utilisant: $ url-> query_form (% $ data); – snakespan

+1

@snakespan Je comprends cela. Mais je dis que vous n'en avez pas besoin. Ce module fait déjà ** tout le travail ** pour vous. Voir mon édition pour savoir comment vous pouvez faire le travail vous-même si vous en avez vraiment besoin. – simbabque