use HTML::Entities qw( decode_entities );
use locale qw();
my $lc = decode_entities('ä');
my $uc = decode_entities('Ä');
utf8::downgrade($uc);
for (0..2) {
if ($_ == 0) {
utf8::downgrade($lc);
locale->unimport();
print("Byte Semantics\n");
print("--------------\n");
}
elsif ($_ == 1) {
utf8::downgrade($lc);
locale->import();
print("Locale Semantics\n");
print("----------------\n");
}
elsif ($_ == 2) {
utf8::upgrade($lc);
locale->unimport();
print("Unicode Semantics\n");
print("-----------------\n");
}
if ($lc =~ /^\Q$uc\E\z/) {
print("case sensitive match\n");
}
elsif ($lc =~ /^\Q$uc\E\z/i) {
print("case insensitive match\n");
}
else {
print("no match\n");
}
if ($lc =~ /^[[:alpha:]]\z/) {
print("[:alpha:]\n");
} else {
print("Not [:alpha:]\n");
}
if ($lc =~ /^[\p{IsAlpha}]\z/) {
print("\\p{IsAlpha}\n");
} else {
print("Not \\p{IsAlpha}\n");
}
print("\n");
}
####
Byte Semantics
--------------
no match
Not [:alpha:]
\p{IsAlpha}
Locale Semantics
----------------
no match
Not [:alpha:]
\p{IsAlpha}
Unicode Semantics
-----------------
case insensitive match
[:alpha:]
\p{IsAlpha}