my $valid_POSIX = qr{ alpha | alnum | ascii | cntrl | digit | graph | lower | print | punct | space | upper | word | xdigit }x; ... my %macros = ( # utf8/POSIX macros alpha => 'letters', alnum => 'letters and digits', ascii => 'all ASCII characters (\000 - \177)', cntrl => 'control characters (those with ASCII values less than 32)', digit => 'digits (like \d)', graph => 'alphanumeric and punctuation characters', lower => 'lowercase letters', print => 'alphanumeric, punctuation, and whitespace characters', punct => 'punctuation characters', space => 'whitespace characters (like \s)', upper => 'uppercase letters', word => 'alphanumeric and underscore characters (like \w)', xdigit => 'hexadecimal digits (a-f, A-F, 0-9)', );