#! perl -slw use strict; sub rndStr{local $"=''; "@_[map{rand$#_} 1 .. shift]"; } print rndStr 40, 'a'..'z'; print rndStr 40, 'A'..'Z'; print rndStr 40, 0..9; print rndStr 40, 'a'..'z', 'A'..'Z', 0..9; __END__ C:\test>212859 rxshjxkkgjqhyhukodujhmghpwujqteudxrvxsxo MCRFGFETIDWEDHBWVSDKGJVMOEDEWKIJXRKAAGSQ 3288712881034147833223824725784363650780 EL0A5PsUCzPb8Sh3IyFGrCKElRPPeilXTPQDreKz C:\test>