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

さっきのエントリのPython版。

import random
import sys

def randstr(length):
    s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
    pool = list(s)
    l = len(pool) - 1
    rand_str = ""
    for i in xrange(length):
        rand_str += pool[random.randint(0, l)]
    return rand_str

length = int(sys.argv[1])
print randstr(length)

random モジュールの使い方についてはこちら:
cf. randomモジュール – blog.PanicBlanket.com

実行結果:

^o^ > python random_string.py 20
cw1xeVn49yXZgexCWuDl

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