|
|
 |
 |
 |
 |
Perl Programming Language
|
 |
 |
 |
 |
 |
 |
 |
 |
How do I read a GZipped UTF-8 file from Perl on Windows?
Hi, folks, I'm looking for a way to read and write *.gz text files in UTF8 encoding on windows (ActivePerl, gzip Perl::IO layer is not available). I've tried naive IO::Zlib stuff like this: tie *OUTPUTFILE, "IO::Zlib", $outputFile, "wb" or die "Could not open $outputFile for reading"; binmode(OUTPUTFILE, ":utf8"); Unfortunately this doesn't work, the error is: "Not a GLOB reference at c:/bin/perl/lib/IO/Zlib.pm line 566." Basically, the goal is to layer utf8 on top of zlib or achieve a similar result using other means. Again, keep in mind, I can't just say "gzip" in open() because that's not available. Does anyone have any pointers? Thanks.
On May 29, 1:24 pm, DmitryB <combust@gmail.com> wrote:
> Hi, folks, > I'm looking for a way to read and write *.gz text files in UTF8 > encoding on windows (ActivePerl, gzip Perl::IO layer is not > available). I've tried naive IO::Zlib stuff like this: > tie *OUTPUTFILE, "IO::Zlib", $outputFile, "wb" or die "Could not open > $outputFile for reading"; > binmode(OUTPUTFILE, ":utf8"); > Unfortunately this doesn't work, the error is: > "Not a GLOB reference at c:/bin/perl/lib/IO/Zlib.pm line 566." > Basically, the goal is to layer utf8 on top of zlib or achieve a > similar result using other means. Again, keep in mind, I can't just > say "gzip" in open() because that's not available. > Does anyone have any pointers? > Thanks.
I just ended up using out of process piped gzip. Works pretty good if you don't forget to quote the filename. :-)
On Fri, 01 Jun 2007 05:47:13 -0000, DmitryB <combust@gmail.com> wrote: >I just ended up using out of process piped gzip. Works pretty good if >you don't forget to quote the filename. :-)
Hard to say without seeing any code, but I suspect you're using something like open my $fh, '-|', 'gzip -d "filename.gz"' or die $!; In that case, you can also give the arguments to gzip in LIST form as open my $fh, '-|', 'gzip' => '-d', 'filename.gz' or die $!; which may be useful. Michele -- {$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr (($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB=' .'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_, 256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,
|
 |
 |
 |
 |
|