Hmmm... Good point. Well, I think in a case like this, I'd still like to try to take advantage of some degree of factoring:
c:\@Work\Perl\monks>perl -wMstrict -le
"use charnames ':full';
;;
use Test::More tests => 2;
;;
my $in = qq{\N{LATIN SMALL LETTER C WITH CEDILLA}};
;;
like ($in, qr{\A[A-Za-z0-9](?:[A-Za-z0-9_.-]*?[A-Za-z0-9]|)\z}, 'kcot
+t');
;;
my $alpha = qr{ [A-Za-z0-9] }xms;
my $alpha_plus = qr{ $alpha | [_.-] }xms;
like ($in, qr{ \A $alpha (?: $alpha_plus* $alpha)? \z }xms, 'Anomalou
+sMonk');
"
1..2
not ok 1 - kcott
# Failed test 'kcott'
# at -e line 1.
# 'ô'
# doesn't match '(?^:\A[A-Za-z0-9](?:[A-Za-z0-9_.-]*?[A-Za-z0-9]|)
+\z)'
not ok 2 - AnomalousMonk
# Failed test 'AnomalousMonk'
# at -e line 1.
# 'ô'
# doesn't match '(?^msx: \A (?^msx: [A-Za-z0-9] ) (?: (?^msx: (
+?^msx: [A-Za-z0-9] ) | [_.-] )* (?^msx: [A-Za-z0-9] ))? \z )'
# Looks like you failed 2 tests of 2.
(Both the /a modifier and the (?a) embedded modifier seem to work with the original
qr{ \A [[:alnum:]] (?: [[:alnum:]_.-]* [[:alnum:]])? \z }xms
regex to suppress extended Unicode matching, but I don't fully understand the interaction of this and related flags with POSIX character classes. And it's one more modifier to remember!)
Give a man a fish: <%-{-{-{-<
|