ランダムな文字列の取得


 String::Rondomを使うと簡単です。
 正規表現で使用する文字を指定する方法と、パターンで指定する方法があります。
 正規表現には以下を使用できます。
正規表現 説明
\w アルファベットと_
\d 数字
\W \wの文字以外で印字可能な文字
\D \dの文字以外で印字可能な文字
. 印字可能な文字
[] 文字クラス
{} 繰り返し
* {0,}と同じ
? {0,1}と同じ
+ {1,}と同じ
 パターンには以下を使用できます。また、自分でパターンを定義することもできます。
パターン 説明
c 英小文字
C 英大文字
n 数字
! 記号 [~`!@$%^&*()-_+={}[]|\:;"'.<>?/#,]
. 上記の文字(cCn!)
s [A-Za-z0-9./]
b バイナリデータ
# 正規表現で指定する
use strict;
use warnings;
use String::Random;

my $sr = String::Random->new();

# 英字6文字+数字2文字
my $str = $sr->randregex('[a-zA-Z]{6}\d{2}');
print $str, "\n";

# 8文字以上16文字以下
my $str2 = $sr->randregex('.{8,16}');
print $str2, "\n";
# パターンで指定する
use strict;
use warnings;
use String::Random;

my $sr = String::Random->new();

# 記号1文字+英小文字5文字+数字2文字
my $str = $sr->randpattern('!cccccnn');
print $str, "\n";

# 8文字
my $str2 = $sr->randregex('........');
print $str2, "\n";
# 独自のパターンで指定する
use strict;
use warnings;
use String::Random;

my $sr = String::Random->new();

$sr->{a} = [split //, 'aiueo'];
$sr->{b} = ['u', 'v', 'w', 'y'];

# パターン[a]5文字+数字3文字
my $str = $sr->randpattern('aaaaannn');
print $str, "\n";

# パターン[b]10文字
my $str2 = $sr->randpattern('bbbbbbbbbb');
print $str2, "\n";

関連項目

rand関数
乱数の取得