2017-10-18 2 views
0

Ich möchte herausfinden, wie das Gegenteil von dem zu tun:Abfrage-Zeichenfolge in Hash Perl

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

Ich habe eine Abfrage-String Form, die Zeichenfolge und konvertieren möchten es auf einen Hash.

Mit mehr Kontext, ein Client übergibt einige URL-Parameter als Stringed Abfrageformular, das Base64-codiert ist, und ich wollte zu dekodieren, zu einem Hash, fügen Sie weitere benutzerdefinierte URL-Parameter zum Hash, dann habe ich eine Methode, die bereits zurück in eine Zeichenfolge konvertiert und an die URL angehängt wird.

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

scheint mit

die Luft zu sprengen Kann

+2

Was haben Sie bisher versucht? –

+0

Was hast du probiert? Welche Probleme haben Sie? Zeig uns deinen Code. Wenn Sie keinen Code haben, ist Stack Overflow wahrscheinlich nicht der beste Platz für Ihre Frage. –

+0

Dies ist leicht mit einer schnellen Suche von CPAN gelöst. Und geben Sie bitte mindestens Ihre Abfragezeichenfolge ein, damit wir wissen, worüber Sie sprechen. – simbabque

Antwort

2

Das URI-Modul in Verbindung mit dem Drop- nicht Objektmethode "neu" über Paket "Query :: URI" lokalisieren in addon URI::QueryParams kann tun, was Sie wollen.

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; 

wird diese

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

drucken Wenn Sie einen Hash eigentlich wollte, Sie the query_form_hash method nennen könnte.

Das macht jedoch wenig Sinn, wenn man bedenkt, dass alle denkbaren Änderungen bereits implementiert sind.

+0

Ich schätze die Antwort, aber das ist das Gegenteil von dem, was ich brauche. Ich möchte nur eine Abfragezeichenfolge in einen Hash konvertieren, weitere Elemente zum Hash hinzufügen und dann - https://stackoverflow.com/questions/30281332/perl-how-can-i-turn-a-hash-into verwenden -a-Abfragezeichenfolge, um zurück in eine Abfrage zu konvertieren. So sollte der Eingang sein: foo = bar & baz = QRR und die Ausgabe: $ data = { 'foo' => 'bar', 'baz' => 'QRR', }; Ich kann dann hinzufügen: $ Daten -> {more} = 'ja'; zurück zur Abfrage konvertieren mit: $ url-> query_form (% $ data); – snakespan

+1

@Snakespan Ich verstehe das. Aber ich sage, du brauchst es nicht. Dieses Modul ** macht schon die ganze Arbeit ** für Sie. Sehen Sie meine Bearbeitung für wie Sie die harte Arbeit selbst tun können, wenn Sie wirklich brauchen. – simbabque