※ ChatGPTを利用し、要約された質問です(原文:リクエストパラメタを一括置き換え)
リクエストパラメタを一括置き換えする方法
このQ&Aのポイント
リクエストパラメタを一括で置き換える方法についてまとめました。
リクエストされたパラメタを一括で置き換える方法をご紹介します。
特定のリクエストパラメタを一括で置き換える方法を説明します。
リクエストパラメタを一括置き換え
if( $ENV{'REQUEST_METHOD'} eq "GET" ) {
$buffer = $ENV{'QUERY_STRING'};
} else {
read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} );
}
%req_params = map { /([^=]+)=(.+)/ } split /&/, $buffer;
上記のように書いていて、リクエストされたものを置き換える時は次のように一個一個書いています。
$req_params{name} =~ s/&/&/g;
$req_params{mail} =~ s/&/&/g;
$req_params{url} =~ s/&/&/g;
このリクエストされたパラメタを一括で置き換えするにはどうすればいいのでしょうか?
例えば、上記の書き方で以下のようなことをしたいです。よろしくお願いいたします。
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{'QUERY_STRING'};
}
foreach ( split(/&/, $buf) ) {
($key, $val) = split(/=/);
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
$val =~ s/&/&/g;
$req_params{$key} .= "\0" if (defined($req_params{$key}));
$req_params{$key} .= $val;
}
お礼
有難うございます。教えていただいたコードで解決出来ました。