roho has asked for the wisdom of the Perl Monks concerning the following question:
In the following code, pack is mangling utf output (the dash "hex 2013") compared to simply printing it.
#!/usr/bin/perl use strict; use warnings; use utf8; use open ':encoding(utf8)'; my $ofile = 'utf_issue.txt'; open(my $fh,'>', $ofile) or die "Error opening $ofile: $!\n"; binmode($fh, ":utf8"); my $x = 'FREIGHT – INTRASTATE'; print $fh $x, "\n"; print $fh pack('A20',$x), "\n";
Is there a work-around for this? This is messing up my output big time!
Thanks.
UPDATE
Here is my work-around, since I am only using pack to pad with blanks:
################################################################### # This subroutine pads 'txt' on the right to length 'len'. ################################################################### sub mypack { my $len = shift; my $txt = shift; $len =~ s/^A//i; # Remove 'A' that system "pack" function uses. return sprintf("%s%s",$txt, ' 'x(($len-length($txt)))); }
"Its not how hard you work, its how much you get done."
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: pack mangles utf output
by daxim (Curate) on Aug 28, 2013 at 14:47 UTC | |
by roho (Bishop) on Aug 28, 2013 at 15:29 UTC | |
by vsespb (Chaplain) on Aug 28, 2013 at 15:50 UTC |
Back to
Seekers of Perl Wisdom