Windows 7でActive Perl 5.14を実行しています。 変換テーブルを読み込み、ファイルを処理して特定のパターンを他のものに置き換えるプログラムを作成しようとしていますパターン - 上のすべてをUnicode(UTF-8)で表します。ここではプログラムの先頭は次のとおりです。Perl + Unicode: "Wide Strings"エラー
wide character in print at (eval 155)E:/Active Perl/lib/Perl5DB.pl:640]line 2, <CONVTABLE> line 1, etc...
なぜそれがある:?
#!/usr/local/bin/perl
# Load a conversion table from CONVTABLE to %ConvTable.
# Then find matches in a file and convert them.
use strict;
use warnings;
use Encode;
use 5.014;
use utf8;
use autodie;
use warnings qw< FATAL utf8 >;
use open qw< :std :utf8 >;
use charnames qw<:full>;
use feature qw<unicode_strings>;
my ($i,$j,$InputFile, $OutputFile,$word,$from,$to,$linetoprint);
my (@line, @lineout);
my %ConvTable; # Conversion hash
print 'Conversion table: opening file: E:\My Documents\Perl\Conversion table.txt'."\n";
my $sta= open (CONVTABLE, "<:encoding(utf8)", 'E:\My Documents\Perl\Conversion table.txt');
binmode STDOUT, ':utf8'; # output should be in UTF-8
# Load conversion hash
while (<CONVTABLE>) {
chomp;
print "$_\n"; # etc ...
# etc ...
それは、この時点で、それが言うことが判明しますか私は、Unicode文字列を正しく処理し、デコードしてUTF-8にエンコードするために必要なすべての処方を実行し実装したと思いますか? それを修正するには?
TIA
ヘレン
コードは問題ありません。デバッガの外で実行するとどうなりますか? – ikegami
ところで、 'binmode STDOUT、 ':utf8';'は 'open qw <:std:utf8>;で同じことが行われて冗長です。 – ikegami
ところで、 'use feature qw;(そのコードには何の影響もありません)は冗長で、' use 5.014; 'で同じことが行われます。 –
ikegami