ランダムな文字列の取得
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関数・乱数の取得