When parsing LC_ALL or LANG to get the locale's encoding, ignore
Rafael Garcia-Suarez [Mon, 14 Jan 2008 22:48:46 +0000 (22:48 +0000)]
whatever is after the @, since that's a modifier, not an encoding.

p4raw-id: //depot/perl@32977

ext/Encode/encoding.pm

index 72a1c82..16139c1 100644 (file)
@@ -1,6 +1,6 @@
 # $Id: encoding.pm,v 2.6 2007/04/22 14:56:12 dankogai Exp $
 package encoding;
-our $VERSION = do { my @r = ( q$Revision: 2.6 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
+our $VERSION = '2.6_01';
 
 use Encode;
 use strict;
@@ -51,10 +51,10 @@ sub _get_locale_encoding {
     no warnings 'uninitialized';
 
     if ( not $locale_encoding && in_locale() ) {
-        if ( $ENV{LC_ALL} =~ /^([^.]+)\.([^.]+)$/ ) {
+        if ( $ENV{LC_ALL} =~ /^([^.]+)\.([^.@]+)(@.*)?$/ ) {
             ( $country_language, $locale_encoding ) = ( $1, $2 );
         }
-        elsif ( $ENV{LANG} =~ /^([^.]+)\.([^.]+)$/ ) {
+        elsif ( $ENV{LANG} =~ /^([^.]+)\.([^.@]+)(@.*)?$/ ) {
             ( $country_language, $locale_encoding ) = ( $1, $2 );
         }