ググってみると String::Random モジュールを使うといいらしいんだけど、うまくインストールできなかったので(原因不明)、もっとベタな方法でやることにした。
use strict;
use warnings;
sub randstr {
my $length = shift(@_);
my @chars;
push(@chars, ('A'..'Z'));
push(@chars, ('a'..'z'));
push(@chars, ('0'..'9'));
my $rand_str = '';
for (my $i = 1; $i <= $length; $i++) {
$rand_str .= $chars[int(rand($#chars+1))];
}
return $rand_str;
}
my $length = shift(@ARGV);
print randstr($length);
$#chars という表現は、配列 @chars の最後のインデックスを取得している。こんな書き方があるとは初めて知った。
実行結果:
^o^ > random_string.pl 20 LxN8r4RSM8rdZ4iQdp3r