[EMAIL PROTECTED] said:
> The one line script was:
> perl -e 'open(I, "lang.lng"); while(<I>) {next if /^[\t ]*#/; next unless
> /\w/; s/\s*$//; print;}'
>
> The text file lang.lng was:
> line1=māta
> lala=tāta
>
> It is not a UTF-8 encoded file, but  a simple ANSI/Unix end of line file
> that contains some special chars in latin1 character set.
>
> The program works fine with Perl 5.8.3 under Red Hat, but it gives me
> that error if running it on another system where I have perl 5.8.0.
> However, I guess this has nothing to do with the version of perl.... 

Actually, it might have everything to do with the version.  5.8.0 would use
the current locale setting on a RedHat OS: if the locale was set to
something referring to utf-8, Perl 5.8.0 would assume a default behavior 
that would try to treat every input file as a utf-8 file.

This was soon recognized as a bad idea, and more recent versions will 
always open input files as "raw" (no special character semantics), and you 
have to specify ":utf8" via the open statement or binmode in order to 
interpret the input data as utf-8.

To get your one-liner to behave the same on 5.8.0 as it does on 5.8.1, you 
need to add "use bytes;" -- this is not necessary (but does no harm) when 
running 5.8.3.
-- 
-----------
David Graff                     Linguistic Data Consortium
[EMAIL PROTECTED]               3600 Market St., Suite 810
voice: (215) 898-0887           University of Pennsylvania
fax:   (215) 573-2175           Philadelphia, PA 19104
                http://www.ldc.upenn.edu


Reply via email to