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