在perl中自定义文件排序
我正在尝试编写一个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
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案例:非常感谢,我将尝试让它工作并让您知道结果。非常感谢,我将尝试让它工作并让您知道结果如何。