パラメータ文字列

form から GET で渡される形式の文字列を切り分けて連想配列に記録します。

プログラムの説明

  1. エディタで param.pl を作成して下さい。
    文字列を切り分けて連想配列に格納するプログラムです。
    $in = "int1=1&int2=2&char1='A'&char2='XYZ'";
    @s = split('&',$in);
    foreach $i(0 .. $#s)
    {
        ($key, $val) = split('=',@s[$i]);
        $para {$key} = $val;
    }
    print %para;
    print "\n\nint2= $para{'int2'}\n";
    print "char2= $para{'char2'}\n";
    
  2. 【実行画面】
    C:\DATA\Perl>perl Param.pl
    char1'A'char2'XYZ'int22int11
    
    int2= 2
    char2= 'XYZ'
    
    C:\DATA\Perl>
    
  3. $in には int1=1 int2=2 char1='A' char2='XYZ' が & で区切って定義されています。
    form から GET で渡されるパラメータは、この形式の文字列です。
    文字列 $in を '&' で切り分けて、配列 @s に格納します。
    $in = "int1=1&int2=2&char1='A'&char2='XYZ'";
    @s = split('&',$in);
    
  4. foreach で $i を 0 から $#s まで繰り返します。
    $#s は 配列 @s の大きさ(サイズ-1)で、今回は0から3まで4回ループします。
    配列 @s[$i] を '=' で切り分けて、$key, $val に格納します。
    連想配列 $para に $key をキーとして $val を格納します。
    foreach $i(0 .. $#s)
    {
        ($key, $val) = split('=',@s[$i]);
        $para {$key} = $val;
    }
    
  5. 作成された連想配列 %para を印字します。
    $para と %para は同じ領域で、連想配列として参照するときは %para を使います。
    print %para;
    
  6. 連想配列 %para から 'int2' と 'char2' をキーにして印字してみました。
    int2= の値は 2 が、char2= の値は 'XYZ' が印字されています。
    print "\n\nint2= $para{'int2'}\n";
    print "char2= $para{'char2'}\n";
    
  7. JavaScript でも同様のプログラム パラメータ文字列 を作成しています。

【NOTE】

ファイルを使わずにコマンドプロンプトから直接タイプしてみました。
C:\>perl -
$in = "int1=1&int2=2&char1='A'&char2='XYZ'";
@s = split('&',$in);
foreach $i(0 .. $#s)
{
    ($key, $val) = split('=',@s[$i]);
    $para {$key} = $val;
}
print $para{'char2'};
__END__
'XYZ'
C:\>

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(Perl)