我使用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