WindowsとUnixで異なる結果を出すPerlでソートする際に問題があります。Perl - UNIXでのソートWindowsとは異なる
文字は次のとおりです。 - _私はこれとは何かを持っているロケールを推測している1 2
In Windows: _ 1 2 - a
In Unix: _ - 1 2 a
- 私はUnixは、ソート、Windowsの並べ替えを一致させるために何ができるのでしょうか?
ありがとうございます!
WindowsとUnixで異なる結果を出すPerlでソートする際に問題があります。Perl - UNIXでのソートWindowsとは異なる
文字は次のとおりです。 - _私はこれとは何かを持っているロケールを推測している1 2
In Windows: _ 1 2 - a
In Unix: _ - 1 2 a
- 私はUnixは、ソート、Windowsの並べ替えを一致させるために何ができるのでしょうか?
ありがとうございます!
ドキュメントは
*** ***警告***環境によって指定されたロケールはソート順に影響します。ネイティブバイト値を使用する従来のソート順を取得するには、LC_ALL = Cを設定します。
ので使用
LC_ALL=C sort ...
例:
$ perl -E'say for @ARGV' a - _ 1 2 | LC_ALL=en_US.UTF-8 sort
_
-
1
2
a
$ perl -E'say for @ARGV' a - _ 1 2 | LC_ALL=C sort
-
1
2
_
a
あなたは、ロケールを使用するには、そのような行がなければsort
を
use locale;
を含む行をコメントアウトしたくない場合Perlは、WindowsとUnixの両方で同じように動作するはずです。
また(または、より良いそれで始まるブロックにソートを囲む)sort
前
no locale;
を追加することができます。
スクリプトには「ロケールを使用する」というものはありません。 –
@それはどこでもそれを変更するためにそれを使用する一つのモジュールです。 –
@Mike:更新されました。 – choroba
テキストのコードポイントソートは最高でも疑わしいです。 – tchrist
これらは、Windowsの結果とはまだ異なります。私はそれをWindowsのソートに合わせる必要があります - これを行うUnixの照合はありますか? –
@Mike、oo、私はWindowsもローカルを使っているのを見ています。さて、あなたのWindowsが使っているローカルなものを調べて、あなたのUNIXシステムに相当するものがあるかどうかを調べ、私が示したように 'C'の代わりに使用する必要があります。私はあなたの幸運を祈ります! – ikegami