Làm cách nào để tôi sắp xếp trên nhiều cột cho mã bên dưới?Sắp xếp theo nhiều cột (Perl)
Hiện nay, mã:
1. Gets một @list
của tập tin trong một $directory
2. Sử dụng regex để có được những $fileName
, $fileLocation
và $fileSize
cho mỗi phần tử trong @list
3. In ra 3 giá trị trong (2) thành 3 cột cố định chiều rộng 4. Sau đó in ra tổng số các tập tin và thư mục kích thước
tôi muốn đầu ra để hiển thị được sắp xếp theo:
1. $fileName
sau đó
2. $fileLocation
sau đó
3. $fileSize
$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 "Total number of files: $count\n";
$total = "$list[$#list]";
$total =~ s/^(.+?)\s.+/$1/;
print "Total directory size: $total\n";