UNIX中的Perl排序不同于Windows

UNIX中的Perl排序不同于Windows,perl,sorting,gnu,Perl,Sorting,Gnu,我在Perl中遇到排序问题,在Windows和Unix中会产生不同的结果 字符为:a-u1 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

我在Perl中遇到排序问题,在Windows和Unix中会产生不同的结果

字符为:a-u1 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

如果不想使用区域设置,请注释掉包含

use locale;
如果没有这样一行,Perl中的排序在Windows和Unix上的行为应该是相同的

您还可以添加

no locale;

排序之前
(或者,更好的做法是,将排序包含在以它开头的块中)。

我的脚本中根本没有“使用区域设置”。@Mike所需要的只是一个模块使用它在任何地方更改它。我的脚本根本没有使用任何模块。我没有尝试任何区域设置,也没有做任何更改。@Mike:perl-le'print sort qw/a-\u1 2/'的结果与Windows中的结果仍然不一样。我需要它来匹配Windows的排序-Unix上是否有一个排序规则可以做到这一点?@Mike,oo,我看到Windows也使用了本地排序规则。好的,你必须找出你的Windows使用的本地版本,看看你的unix系统上是否有一个相同的版本,然后用它来代替我所展示的
C
。祝你好运!这似乎就是我所处的位置——English_United United States。1252似乎是Windows one,但我还找不到与之对应的Unix。最初,以下是一条评论,但为了进一步曝光,我只是在我的评论中提出了一个新问题。然后我删除了评论,因为我不想让人们回答两次。我最初是向@tchrist发表评论的,因为他在这件事上给我的印象是一位大师。