Perlで英数字のランダム文字列を生成する方法 [Perl]
Perl で英数字のランダム文字列を生成する方法はいくつかありますが、
いちばん分かりやすい方法は、あらかじめ配列に a~z、A~Z、0~9を入れておき、
配列の要素をランダムに指定して文字を追加していく方法でしょう。
この手法ならば、あらかじめ配列に英数字以外の記号等を入れておけば、
記号等も生成文字列の対象とすることが容易にできます。
以下は、サンプルのソースコードです。
このサブルーチンを以下のようにして呼び出すことで、
変数 $rand_str にランダムな文字列が格納されます。
引数の数値は、生成する文字列の長さです。
いちばん分かりやすい方法は、あらかじめ配列に a~z、A~Z、0~9を入れておき、
配列の要素をランダムに指定して文字を追加していく方法でしょう。
この手法ならば、あらかじめ配列に英数字以外の記号等を入れておけば、
記号等も生成文字列の対象とすることが容易にできます。
以下は、サンプルのソースコードです。
sub randstr { my $length = $_[0]; my @char_tmp=(); # 配列にランダム生成する対象の文字列を格納 # (以下は、小文字のa~z、大文字のA~Z、数字の0~9) push @char_tmp, ('a'..'z'); push @char_tmp, ('A'..'Z'); push @char_tmp, (0..9); # 指定文字数分、ランダム文字列を生成する my $rand_str_tmp = ''; my $i; for ($i=1; $i<=$length; $i++) { $rand_str_tmp .= $char_tmp[int(rand($#char_tmp+1))]; } return $rand_str_tmp; }
このサブルーチンを以下のようにして呼び出すことで、
変数 $rand_str にランダムな文字列が格納されます。
引数の数値は、生成する文字列の長さです。
$rand_str = &randstr(4);
CGI & Perl ポケットリファレンス (Pocket reference)
posted with amazlet at 10.09.28
藤田 郁 三島 俊司
技術評論社
売り上げランキング: 219179
技術評論社
売り上げランキング: 219179
コメント 0