NAME¶
utf8::all - turn on Unicode - all of it
VERSION¶
version 0.015
SYNOPSIS¶
use utf8::all; # Turn on UTF-8, all of it.
# Also provide UTF-8 versions of functions from...
use utf8::all qw(File::Find); # File::Find
use utf8::all qw(Cwd); # Cwd
use utf8::all qw(:all); # everything
open my $in, '<', 'contains-utf8'; # UTF-8 already turned on here
print length 'foo bXr'; # 7 UTF-8 characters
my $utf8_arg = shift @ARGV; # @ARGV is UTF-8 too (only for main)
DESCRIPTION¶
utf8 allows you to write your Perl encoded in UTF-8. That means UTF-8 strings,
variable names, and regular expressions.
"utf8::all" goes further:
- •
- Makes @ARGV encoded in UTF-8 (when "utf8::all" is used from the
main package).
- •
- Filehandles are opened with UTF-8 encoding turned on by default (including
STDIN, STDOUT, STDERR). If you don't want UTF-8 for a particular
filehandle, you'll have to set "binmode $filehandle".
- •
- charnames are imported so "\N{...}" sequences can be used to
compile Unicode characters based on names.
- •
- readdir now returns UTF-8
- •
- glob and the "<>" operator
Import options¶
If you provide the "File::Find" or "Cwd" options to the
"use utf8::all" line, those modules are loaded if they haven't been
already, but you will get UTF-8-ified versions instead of the normal ones.
This effect is lexical.
- File::Find
- "find" and "finddepth"
- Cwd
- "cwd", "fastcwd", "getcwd",
"fastgetcwd"
"abs_path", "realpath", "fast_abs_path"
Use "use utf8::all qw(:all)" to get all of these, plus whatever we
dream up in the future.
Lexical scope¶
The pragma is lexically-scoped, so you can do the following if you had some
reason to:
{
use utf8::all;
open my $out, '>', 'outfile';
my $utf8_str = 'foo bXr';
print length $utf8_str, "\n"; # 7
print $out $utf8_str; # out as utf8
}
open my $in, '<', 'outfile'; # in as raw
my $text = do { local $/; <$in>};
print length $text, "\n"; # 10, not 7!
INTERACTION WITH AUTODIE¶
If you use autodie, which is a great idea, you need to use at least version
2.12, released on June 26, 2012
<
https://metacpan.org/source/PJF/autodie-2.12/Changes#L3>. Otherwise,
autodie obliterates the IO layers set by the open pragma. See RT #54777
<
https://rt.cpan.org/Ticket/Display.html?id=54777> and GH #7
<
https://github.com/doherty/utf8-all/issues/7>.
AVAILABILITY¶
The project homepage is <
http://metacpan.org/release/utf8-all/>.
The latest version of this module is available from the Comprehensive Perl
Archive Network (CPAN). Visit <
http://www.perl.com/CPAN/> to find a CPAN
site near you, or see <
https://metacpan.org/module/utf8::all/>.
SOURCE¶
The development version is on github at
<
http://github.com/doherty/utf8-all> and may be cloned from
<
git://github.com/doherty/utf8-all.git>
BUGS AND LIMITATIONS¶
You can make new bug reports, and view existing ones, through the web interface
at <
https://github.com/doherty/utf8-all/issues>.
AUTHORS¶
- •
- Michael Schwern <mschwern@cpan.org>
- •
- Mike Doherty <doherty@cpan.org>
COPYRIGHT AND LICENSE¶
This software is copyright (c) 2009 by Michael Schwern
<mschwern@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same
terms as the Perl 5 programming language system itself.