Ответ, который я получаю на запрос LWP: application/x-www-form-urlencoded Возможно ли преобразовать текст этого в хеш с помощью какого-либо метода объекта?
application/x-www-form-urlencoded
# from a HTTP::Response object my $urlencoded = $response->content;
Vars in CGI возвращает хэш.
Vars
CGI
use CGI qw(); CGI->new($urlencoded)->Vars;
parameters in Plack::Request возвращает объект Hash::MultiValue, который фактически является подходящей структурой данных для этого.
parameters
Plack::Request
Hash::MultiValue
use Plack::Request qw(); Plack::Request->new({QUERY_STRING => $urlencoded})->parameters;
param in APR::Request / libapreq2 - не совсем Perl-хеш, но объект XS с прикрепленной магией, поведение которой достаточно близко.
param
APR::Request
libapreq2
insert hand-waving here, no libapreq2 available right now for testing
url_params_mixed in URL::Encode
url_params_mixed
URL::Encode
require URL::Encode::XS; use URL::Encode qw(url_params_mixed); url_params_mixed $urlencoded;
parse_query_string in CGI::Deurl::XS
parse_query_string
CGI::Deurl::XS
use CGI::Deurl::XS 'parse_query_string'; parse_query_string $urlencoded;
query_form в URI тоже хорошо работает, в крайнем случае; и query_form_hash в URI::QueryParam.
query_form
URI
query_form_hash
URI::QueryParam
use URI qw(); URI->new("?$urlencoded")->query_form; use URI::QueryParam qw(); URI->new("?$urlencoded")->query_form_hash;
Бонус: также см. HTTP::Body::UrlEncoded, используемый Catalyst .
HTTP::Body::UrlEncoded