Windows で作成した Perl プログラムがあります。それでは始まります:
$unused_header = <STDIN>;
my @header_fields = split('\|\^\|', $unused_header, -1);
次の非常に大きなファイルで構成される入力を分割する必要があります。
The|^|Quick|^|Brown|^|Fox|!|
の中へ:
{The, Quick, Brown, Fox|!|}
注: この行はヘッダーのみを実行します。繰り返しのデータ行を実行するのと同じような別の行があります。
Windowsではうまくいきましたが、Linuxでは失敗します。ただし、Perl 内で同じ内容の文字列を定義し、それに対して分割を実行すると、正常に動作します。
UTF-16エンコーディングの扱いの問題だと思うのですが、どうしたらいいのかわかりません。STDINにパイプされているUTF-16をperlに理解させる方法を知っている人はいますか?
http://www.haboogo.com/matching_patterns/2009/01/utf-16-processing-issue-in-perl.htmlを見つけましたが、どうすればよいかわかりません。