Scroll to navigation

utf8::all(3pm) User Contributed Perl Documentation utf8::all(3pm)
 

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.
2014-09-08 perl v5.20.0