Mention bytes::length modern workaround re 01e331e5
authorJarkko Hietaniemi <jhi@iki.fi>
Mon, 7 Mar 2016 11:48:23 +0000 (06:48 -0500)
committerJarkko Hietaniemi <jhi@iki.fi>
Mon, 7 Mar 2016 12:43:46 +0000 (07:43 -0500)
Also add an emboldening and parabreak to underline the discouragement.

lib/bytes.pm

index d871a13..f0022ee 100644 (file)
@@ -35,13 +35,14 @@ bytes - Perl pragma to expose the individual bytes of characters
 
 =head1 NOTICE
 
-
 Because the bytes pragma breaks encapsulation (i.e. it exposes the innards of
 how the perl executable currently happens to store a string), the byte values
-that result are in an unspecified encoding.  Use of this module for anything
-other than debugging purposes is strongly discouraged.  If you feel that the
-functions here within might be useful for your application, this possibly
-indicates a mismatch between your mental model of Perl Unicode and the current
+that result are in an unspecified encoding.
+
+B<Use of this module for anything other than debugging purposes is
+strongly discouraged.>  If you feel that the functions here within
+might be useful for your application, this possibly indicates a
+mismatch between your mental model of Perl Unicode and the current
 reality. In that case, you may wish to read some of the perl Unicode
 documentation: L<perluniintro>, L<perlunitut>, L<perlunifaq> and
 L<perlunicode>.
@@ -108,6 +109,12 @@ C<chr()>, C<ord()>, C<substr()>, C<index()> and C<rindex()> behave similarly.
 
 For more on the implications, see L<perluniintro> and L<perlunicode>.
 
+C<bytes::length()> is admittedly handy if you need to know the
+B<byte length> of a Perl scalar.  But a more modern way is:
+
+   use Encode 'encode';
+   length(encode('UTF-8', $scalar))
+
 =head1 LIMITATIONS
 
 C<bytes::substr()> does not work as an I<lvalue()>.