my $pwdchars = join '', map chr, 0x21 .. 0x7e; for ($pwdchars) { s/\d+// if $flags{numbers}; s/[A-Z]+// if $flags{uppercase}; s/[a-z]+// if $flags{lowercase}; s/[_\W]+//g if $flags{symbols}; tr/1Il0O//d if $flags{confusable}; }