in reply to validation: regex for three initials

($name =~ m/^\_{1,3}/)

you are actually matching 1, 2 or 3 '_' here... and I believe you don't want that. If you want to match anything *but* 3 '_' you want

($name =~ m/^[^_]{3}$/)

anyway, that is not what you are asking for, but I thought it would be useful... you might want to check perlre to clarify regexes and if you are relly interested in regexes, the book Mastering Regular Expressions from ORA is really good.

just my $0.02