大佬教程收集整理的这篇文章主要介绍了跨多列排序(Perl),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
目前,代码:
1.获取$目录中的@list文件
2.使用正则表达式为@list中的每个元素获取$filename,$fileLOCATIOn和$fileSize
3.将(2)中的3个值打印成3个固定宽度的列
4.然后打印出文件总数和目录大小@H_616_7@
我希望输出显示排序依据:
1. $filename然后
2. $fileLOCATIOn然后
3. $fileSize@H_616_7@
$directory = '/shared/tmp'; $count = 0; @list = qx{du -ahc $directory}; printf ("%-60s %-140s %-5s\n","Filename","LOCATIOn","Size"); foreach(@list) { chop($_); # remove newline at end if (/^(.+?K)\s+(.+\/)(.+\.[A-Za-z0-9]{2,4})$/) { # store lines with valid filename into new array # push(@files,$1); $fileSize = $1; $fileLOCATIOn = $2; $filename = $3; if ($filename =~ /^\./) { next; } printf ("%-60s %-140s %-5s\n",$filename,$fileLOCATIOn,$fileSizE); $count++; } else { next; } } print "@R_724_10586@l number of files: $count\n"; $@R_724_10586@l = "$list[$#list]"; $@R_724_10586@l =~ s/^(.+?)\s.+/$1/; print "@R_724_10586@l directory size: $@R_724_10586@l\n";
sort
!
>文件:sort – perldoc.perl.org@H_616_7@
示例实现@H_616_7@
将结果(在哈希引用中)推送到名为@entries的数组中,并使用类似下面的内容.@H_616_7@ @H_462_13@my @entries; ... # inside your loop push @entries,{ 'filename' => $filename,'LOCATIOn' => $fileLOCATIOn,'size' => $fileSize }; ... my @sorted_entries = sort { $a->{'filename'} cmp $b->{'filename'} || # use 'cmp' for Strings $a->{'LOCATIOn'} cmp $b->{'LOCATIOn'} || $a->{'size'} <=> $b->{'size'} # use '<=>' for numbers } @entries;
以上是大佬教程为你收集整理的跨多列排序(Perl)全部内容,希望文章能够帮你解决跨多列排序(Perl)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。