Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中自定义文件排序_Perl_File_Sorting - Fatal编程技术网

在perl中自定义文件排序

在perl中自定义文件排序,perl,file,sorting,Perl,File,Sorting,我正在尝试编写一个perl脚本,它实现了自己的自定义排序。如果输入文件看起来像: hello advantage cat 排序后的版本如下所示: cat hello advantage 如果单词是按长度排序的,如果两个单词的长度相同,则会对这两个单词进行正常的词典比较 根据我在网上看到的情况,我的排序行如下所示: @sorted = sort { length $a <=> length $b } @elements @sorted=sort{length$a length$b

我正在尝试编写一个perl脚本,它实现了自己的自定义排序。如果输入文件看起来像:

hello
advantage
cat
排序后的版本如下所示:

cat
hello
advantage
如果单词是按长度排序的,如果两个单词的长度相同,则会对这两个单词进行正常的词典比较

根据我在网上看到的情况,我的排序行如下所示:

@sorted = sort { length $a <=> length $b } @elements
@sorted=sort{length$a length$b}@elements

但是我不确定如果两个单词的长度不一样,我该如何添加正常排序的部分。

排序的工作方式是基于比较按位置排序。如果排序函数为负、零或正

这就是
操作符对数字的作用,而
cmp
操作符对字符串的作用

因此,它会很好地工作:

print 2 <=> 3,"\n";
print 3 <=> 3,"\n";
print 3 <=> 2,"\n";
或者更好:

print 3 <=> 3 || "fish", "\n";
print 3 <=> 2 || "fish", "\n";
打印3 | | |“鱼”,“\n”;
打印3 2 | | |“鱼”和“\n”;
因此,要回答您的问题-如果您想先按长度排序,然后再按字符串排序:

my @sorted = sort { length $a <=> length $b 
                 || $a cmp $b } @elements
my@sorted=sort{length$a length$b
||$a cmp$b}@elements

排序的工作方式是——它根据比较按位置排序。如果排序函数为负、零或正

这就是
操作符对数字的作用,而
cmp
操作符对字符串的作用

因此,它会很好地工作:

print 2 <=> 3,"\n";
print 3 <=> 3,"\n";
print 3 <=> 2,"\n";
或者更好:

print 3 <=> 3 || "fish", "\n";
print 3 <=> 2 || "fish", "\n";
打印3 | | |“鱼”,“\n”;
打印3 2 | | |“鱼”和“\n”;
因此,要回答您的问题-如果您想先按长度排序,然后再按字符串排序:

my @sorted = sort { length $a <=> length $b 
                 || $a cmp $b } @elements
my@sorted=sort{length$a length$b
||$a cmp$b}@elements

您了解
length$a length$b
是如何工作的吗?它根据比较结果返回1、0或-1。因此,您必须检查0的大小写:您了解
length$a length$b
是如何工作的吗?它会根据比较结果返回1、0或-1。因此,您必须检查0案例:非常感谢,我将尝试让它工作并让您知道结果。非常感谢,我将尝试让它工作并让您知道结果如何。