sub random_string { my $length = shift || 2; my @chars = ('a'..'z','A'..'Z',0..9); @chars = UNIVERSAL::isa($_[0],'ARRAY') ? @{$_[0]} : @_ if @_; join ('',map{ $chars[ rand @chars ] } (1..$length)); } # Example print random_string(5,[qw(foo bar base )]),"\n"; print random_string(5,'a'..'f',0..9 ),"\n";