Esta pregunta está relacionada de alguna manera con What’s the simplest way to make a HTTP GET request in Perl?.¿Cómo codifico cadenas de consulta HTTP GET en Perl?
Antes de realizar la solicitud a través de LWP::Simple
Tengo un hash de componentes de cadena de consulta que necesito serializar/escapar. ¿Cuál es la mejor manera de codificar la cadena de consulta? Debe tener en cuenta los espacios y todos los caracteres que deben escaparse en URI válidos. Me imagino que probablemente esté en un paquete existente, pero No estoy seguro de cómo encontrarlo.
use LWP::Simple;
my $base_uri = 'http://example.com/rest_api/';
my %query_hash = (spam => 'eggs', foo => 'bar baz');
my $query_string = urlencode(query_hash); # Part in question.
my $query_uri = "$base_uri?$query_string";
# http://example.com/rest_api/?spam=eggs&foo=bar+baz
$contents = get($query_uri);
En breve: sub escape_hash {my% h = @_; return join '&', map {join '=', map uri_escape ($ _), $ _, $ h {$ _}} teclas% h} –
Pensé en hacer eso también, pero los mapas de anidamiento simplemente no se veían derecho para mí –
Trazar un mapa dentro de (cada uno) con push suena igual de complicado para mí, pero introduce variables temporales innecesarias. –