print "tera\n" if ord(pack("C", 0xdf)) == 0x3af;
- # but pack/unpack C are not, in case you still
+ # but pack/unpack are not affected, in case you still
# want back to your native encoding
print "peta\n" if unpack("C", (pack("C", 0xdf))) == 0xdf;
C<use encoding> matters, and it affects B<the whole script>.
If no encoding is specified, the environment variable L<PERL_ENCODING>
-is consulted. If that fails, "latin1" (ISO 8859-1) is assumed.
-If no encoding can be found, C<Unknown encoding '...'> error will be thrown.
+is consulted. If that fails, "latin1" (ISO 8859-1) is assumed. If no
+encoding can be found, C<Unknown encoding '...'> error will be thrown.
=head1 KNOWN PROBLEMS
-The C<\x..> and C<\0...> in regular expressions are not affected by
-this pragma. They very probably should.
+Literals in regular expressions are not affected by this pragma.
+They very probably should.
=head1 SEE ALSO
-print "1..10\n";
+print "1..15\n";
use encoding "latin1"; # ignored (overwritten by the next line)
use encoding "greek"; # iso 8859-7 (no "latin" alias, surprise...)
print "not " unless unpack("C", chr(0xdf)) == 0xce;
print "ok 9\n";
+print "not " unless unpack("U", pack("U", 0xdf)) == 0xdf;
+print "ok 10\n";
+
+print "not " unless unpack("U", chr(0xdf)) == 0x3af;
+print "ok 11\n";
+
# charnames must still work
use charnames ':full';
print "not " unless ord("\N{LATIN SMALL LETTER SHARP S}") == 0xdf;
-print "ok 10\n";
+print "ok 12\n";
+
+# combine
+
+$c = "\xDF\N{LATIN SMALL LETTER SHARP S}" . chr(0xdf);
+
+print "not " unless ord($c) == 0x3af;
+print "ok 13\n";
+
+print "not " unless ord(substr($c, 1, 1)) == 0xdf;
+print "ok 14\n";
+
+print "not " unless ord(substr($c, 2, 1)) == 0x3af;
+print "ok 15\n";