Perlでランダムな文字列を得る

ググってみると 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
カテゴリー: Perl パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください