Rhythm & Biology

Engineering, Science, et al.

String::Random

単純にランダム文字列が欲しいときがありますね。例えば秘密鍵の文字列を作りたいときなど。

自分で乱数を使って書いてもそれほど大したコードにはならないのですが、String::Randomを使えば非常に楽に書けます。特に正規表現を使った方法は強力だと思います。

use String::Random;
my $rand = String::Random->new;
my $str = $rand->randregex('[0-9A-F]{16}');
print $str, "\n";

こうすれば16文字の16進文字列が作れます。

他にもrandom_string関数を使った方法があり、

use String::Random qw/random_string/;
print random_string("s" x 16);

とすれば、[a-zA-Z0-9]を使った16文字長のランダム文字列が得られます。この"s"の部分が使う文字種を指定しているのですが、これは用意されているもの以外にも自分で新たに定義でき、

use String::Random;
my $rand = String::Random->new;
$rand->{'h'} = [A..Z, 0..9];
print $rand->randpattern("h" x 16);

とすれば、[A-Z0-9]を使った16文字長のランダム文字列が得られます。