in reply to Character class in an array

you are getting  [a x z] instead of  [axz] when you say  [@a]

Are you sure your  join used an empty string? That is,  '' instead of  ' '

Try:

$tmp = join('',@a); print if /^[$tmp]{3}$/;