package MatchRegex; use strict; use vars qw( @ISA @EXPORT_OK @digits @alpha ); require Exporter; @ISA = 'Exporter'; @EXPORT_OK = qw( digits alpha UCalpha LCalpha ); @digits = (0..9); @alpha = ('a'..'z', 'A'..'Z'); sub digits { ref $_[0] and local @digits = @{shift()}; # could use my() my $len; if (!@_) { $len = 1 } elsif (@_ == 1) { $len = $_[0] } else { $len = $_[0] + rand($_[1] + 1 - $_[0]) } return map $digits[rand @digits], 1 .. $len; } sub LCalpha { local @alpha = @alpha[0..25]; α } sub UCalpha { local @alpha = @alpha[26..51]; α } sub alpha { ref $_[0] and local @alpha = @{shift()}; # could use my() my $len; if (!@_) { $len = 1 } elsif (@_ == 1) { $len = $_[0] } else { $len = $_[0] + rand($_[1] + 1 - $_[0]) } return map $alpha[rand @alpha], 1 .. $len; } #### use MatchRegex qw( digits UCalpha ); $filename = join "", ( digits(2), # \d{2} UCalpha(2,5), # [A-Z]{2,5} '_', # _ digits(2), # \d{2} digits(2), # \d{2} digits(4), # \d{4} );