Perlモジュールcode
を使用してパラメータの値を取得するには?URI::URL
このリンクから:
http://www.someaddress.com/index.html?test=value&code=INT_12345
URI::URL
orを使用して実行できますURI
(最初のものは時代遅れであることは知っています)。前もって感謝します。
Perlモジュールcode
を使用してパラメータの値を取得するには?URI::URL
このリンクから:
http://www.someaddress.com/index.html?test=value&code=INT_12345
URI::URL
orを使用して実行できますURI
(最初のものは時代遅れであることは知っています)。前もって感謝します。
URI
オブジェクトを作成し、query_form
メソッドを使用してクエリのキーと値のペアを取得します。コード パラメータが 1 回しか指定されていないことがわかっている場合は、次のように指定できます。
my $uri = URI->new("http://www.someaddress.com/index.html?test=value&code=INT_12345");
my %query = $uri->query_form;
print $query{code};
別の方法として、URI オブジェクトにいくつかの追加メソッドを追加する URI::QueryParam を使用することもできます。
my $uri = URI->new("http://www.someaddress.com/index.html?test=value&code=INT_12345");
print $uri->query_param("code");
use URI;
my $uri = URI->new("http://someaddr.com/index.html?test=FIRST&test=SECOND&code=INT_12345");
my %query = $uri->query_form;
use Data::Dumper;
print Dumper \%query;
見える:
$VAR1 = {
'test' => 'SECOND',
'code' => 'INT_12345'
};
残念ながら、この結果は間違っています。
可能な解決策があります:
use URI::Escape;
sub parse_query {
my ( $query, $params ) = @_;
$params ||= {};
foreach $var ( split( /&/, $query ) ){
my ( $k, $v ) = split( /=/, $var );
$k = uri_unescape $k;
$v = uri_unescape $v;
if( exists $params->{$k} ) {
if( 'ARRAY' eq ref $params->{$k} ) {
push @{ $params->{$k} }, $v;
} else {
$params->{$k} = [ $params->{$k}, $v ];
}
} else {
$params->{$k} = $v;
}
}
return $params;
}