我使用DIRECTORY_NAMES
作为关键字,并将二维数组作为数据(文件的filename
和size
)进行以下哈希处理。如何对二维数组的哈希进行排序(简单示例)
$hash{'DIRECTORY_NAME'} = [
['filename.txt', 1024]
];
它看起来是这样的:
这里是我的代码:
use strict;
use warnings;
use Data::Dumper;
my %hash = (
'DIR_XYZ' => [
[
'filename_xyz.log',
2048
],
[
'filename_abc.txt',
1024
]
],
'DIR_ABC' => [
[
'filename_987.log',
4096
],
[
'filename_123.txt',
2048
]
],
);
$hash{'DIRECTORY_NAME'} = [
['filename.txt', 1024]
];
print Dumper \%hash;
我的问题:
1)如何对数据进行排序f。%hash
f首先通过文件名然后通过文件大小和无论哈希键?但是有关目录名称的信息很重要,不能被忽略,并且必须在otutput上发生。因此,输出应该是这样的:
filename.txt 1024 (DIRECTORY_NAME)
filename_123.txt 2048 (DIR_ABC)
filename_987.log 4096 (DIR_ABC)
filename_abc.txt 1024 (DIR_XYZ)
filename_xyz.log 2048 (DIR_XYZ)
2)如何然后通过文件名,并没有哈希键此事最早由文件大小在%hash
数据进行排序?但是有关目录名称的信息很重要,不能被忽略,并且必须在otutput上发生。所以,输出应该看起来像这样:
filename.txt 1024 (DIRECTORY_NAME)
filename_abc.txt 1024 (DIR_XYZ)
filename_123.txt 2048 (DIR_ABC)
filename_xyz.log 2048 (DIR_XYZ)
filename_987.log 4096 (DIR_ABC)
你尝试过什么吗? – melpomene
您无法对散列进行排序。唯一可以排序的是列表,因此第1步应该考虑您想要排序的列表。 – melpomene