• [^] # Re: solution ?

    Posté par . En réponse au message substition avec perl et utf-8. Évalué à 1.

    pour les options de perl
    man perlrun

    et pour le -C


    -C [number/list]
    The -C flag controls some Unicode of the Perl Unicode features.

    As of 5.8.1, the -C can be followed either by a number or a list of option letters. The letters, their numeric values, and effects are as follows; listing the letters is equal to summing the numbers.


    I 1 STDIN is assumed to be in UTF-8
    O 2 STDOUT will be in UTF-8
    E 4 STDERR will be in UTF-8
    S 7 I + O + E
    i 8 UTF-8 is the default PerlIO layer for input streams
    o 16 UTF-8 is the default PerlIO layer for output streams
    D 24 i + o
    A 32 the @ARGV elements are expected to be strings encoded in UTF-8
    L 64 normally the "IOEioA" are unconditional,
    the L makes them conditional on the locale environment
    variables (the LC_ALL, LC_TYPE, and LANG, in the order
    of decreasing precedence) -- if the variables indicate
    UTF-8, then the selected "IOEioA" are in effect




    For example, -COE and -C6 will both turn on UTF-8-ness on both STDOUT and STDERR. Repeating letters is just redundant, not cumulative nor toggling.

    The io options mean that any subsequent open() (or similar I/O operations) will have the :utf8 PerlIO layer implicitly applied to them, in other words, UTF-8 is expected from any input stream, and UTF-8 is produced to any output stream. This is just the default, with explicit layers in open() and with binmode() one can manipulate streams as usual.

    -C on its own (not followed by any number or option list), or the empty string "" for the PERL_UNICODE environment variable, has the same effect as -CSDL. In other words, the standard I/O handles and the default open() layer are UTF-8-fied but only if the locale environment variables indicate a UTF-8 locale. This behaviour follows the implicit (and problematic) UTF-8 behaviour of Perl 5.8.0.

    You can use -C0 (or "0" for PERL_UNICODE) to explicitly disable all the above Unicode features.

    The read-only magic variable ${^UNICODE} reflects the numeric value of this setting. This is variable is set during Perl startup and is thereafter read-only. If you want runtime effects, use the three-arg open() (see ``open'' in perlfunc), the two-arg binmode() (see ``binmode'' in perlfunc), and the open pragma (see open).

    (In Perls earlier than 5.8.1 the -C switch was a Win32-only switch that enabled the use of Unicode-aware ``wide system call'' Win32 APIs. This feature was practically unused, however, and the command line switch was therefore ``recycled''.)