Document pack U0U.
Jarkko Hietaniemi [Thu, 14 Feb 2002 22:13:18 +0000 (22:13 +0000)]
p4raw-id: //depot/perl@14696

pod/perluniintro.pod

index 5f2f340..ee900bb 100644 (file)
@@ -221,6 +221,17 @@ Note that both C<\x{...}> and C<\N{...}> are compile-time string
 constants: you cannot use variables in them.  if you want similar
 run-time functionality, use C<chr()> and C<charnames::vianame()>.
 
+Also note that if all the code points for pack "U" are below 0x100,
+bytes will be generated, just like if you were using C<chr()>.
+
+   my $bytes = pack("U*", 0x80, 0xFF);
+
+If you want to force the result to Unicode characters, use the special
+C<"U0"> prefix.  It consumes no arguments but forces the result to be
+in Unicode characters, instead of bytes.
+
+   my $chars = pack("U0U*", 0x80, 0xFF);
+
 =head2 Handling Unicode
 
 Handling Unicode is for the most part transparent: just use the
@@ -611,8 +622,9 @@ For UTF-8 only, you can use:
 
 If invalid, a C<Malformed UTF-8 character (byte 0x##) in
 unpack> is produced. The "U0" means "expect strictly UTF-8
-encoded Unicode". Without that the C<unpack("U*", ...)>
-would accept also data like C<chr(0xFF>).
+encoded Unicode".  Without that the C<unpack("U*", ...)>
+would accept also data like C<chr(0xFF>), similarly to the
+C<pack> as we saw earlier.
 
 =item How Do I Convert Binary Data Into a Particular Encoding, Or Vice Versa?