我用文件详细信息值填充一个数组,如下所示:
push(@local_files,{fname=>$bname, fdate=>$lfdate, fsize=>$lfsize});
然后尝试根据“fname”降序对这些文件进行排序,如以下示例和许多其他示例所示:
my @sorted=sort { $b->{'fname'} <=> $a->{'fname'} } \@local_files;
my @sorted=sort { $local_files['fname']{$b} cmp $local_files['fname']{$a} } @local_files;
我尝试过的任何方法都无法排序此数组,这就是我需要帮助的地方。
但是使用dumper我可以看到值存储在数组中
foreach my $whatever(@sorted){
## this works to dump contents of whatever
print Dumper(\$whatever);
}
输出如下(片段):
{
'fdate' => '88.837662037037',
'fname' => 'Testfile997.txt',
'fsize' => 4415
},
{
'fdate' => '88.837662037037',
'fname' => 'Testfile998.txt',
'fsize' => 4415
},
最后我希望能够按存储的3个值中的任何一个进行排序,但多次搜索都没有用。任何帮助都将不胜感激-谢谢
1条答案
按热度按时间kuhbmx9i1#
你第一次差点就成功了。正确:
您有一个遗漏的
\
,并且您执行的是数值比较而不是字符串比较(我删除了不需要的'
,但这并不重要)。使用Sort-Key也可以很好地完成此操作。
请注意,如果您有
Testfile99
(而不是Testfile099
)和Testfile100
(因为9
在1
之后),则上述两种排序方式都会有问题。使用自然排序方式可以解决这个问题。我希望能够按存储的3个值中的任何一个进行排序