我按名称顺序将文件放在一个位置,当我尝试使用命令promt打印文件名时,按其他顺序打印
下面是这个命令使用的promt代码打印名称
'dir / b,
输入文件
RU29_SCHEDULE_1_00001.xml
RU29_SCHEDULE_2_00002.xml
RU29_SECTION_00001.xml
RU29_SECTION_00002.xml
RU29_SECTION_00003.xml
RU29_SECTION_00004.xml
RU29_SECTION_00005.xml
RU29_SECTION_00006.xml
RU29_SECTION_00007.xml
RU29_SECTION_00008.xml
RU29_SECTION_00009.xml
RU29_SECTION_000010.xml
RU29_SECTION_000011.xml
RU29_SECTION_000012.xml
RU29_SECTION_000013.xml
RU29_SECTION_000014.xml
RU29_SECTION_Preamble.xml
输出我
RU29_SCHEDULE_1_00001.xml
RU29_SCHEDULE_2_00002.xml
RU29_SECTION_00001.xml
RU29_SECTION_000010.xml
RU29_SECTION_000011.xml
RU29_SECTION_000012.xml
RU29_SECTION_000013.xml
RU29_SECTION_000014.xml
RU29_SECTION_00002.xml
RU29_SECTION_00003.xml
RU29_SECTION_00004.xml
RU29_SECTION_00005.xml
RU29_SECTION_00006.xml
RU29_SECTION_00007.xml
RU29_SECTION_00008.xml
RU29_SECTION_00009.xml
RU29_SECTION_Preamble.xml
输出我需要
RU29_SECTION_Preamble.xml
RU29_SECTION_00001.xml
RU29_SECTION_00002.xml
RU29_SECTION_00003.xml
RU29_SECTION_00004.xml
RU29_SECTION_00005.xml
RU29_SECTION_00006.xml
RU29_SECTION_00007.xml
RU29_SECTION_00008.xml
RU29_SECTION_00009.xml
RU29_SECTION_000010.xml
RU29_SECTION_000011.xml
RU29_SECTION_000012.xml
RU29_SECTION_000013.xml
RU29_SECTION_000014.xml
RU29_SCHEDULE_1_00001.xml
RU29_SCHEDULE_2_00002.xml
感谢提前
答案 0 :(得分:0)
使用Sort::Key::Natural
按自然顺序对列表进行排序。
use strict;
use warnings;
use Sort::Key::Natural qw(natsort);
print natsort <DATA>;
__DATA__
RU29_SCHEDULE_1_00001.xml
RU29_SCHEDULE_2_00002.xml
RU29_SECTION_00001.xml
RU29_SECTION_000010.xml
RU29_SECTION_000011.xml
RU29_SECTION_000012.xml
RU29_SECTION_000013.xml
RU29_SECTION_000014.xml
RU29_SECTION_00002.xml
RU29_SECTION_00003.xml
RU29_SECTION_00004.xml
RU29_SECTION_00005.xml
RU29_SECTION_00006.xml
RU29_SECTION_00007.xml
RU29_SECTION_00008.xml
RU29_SECTION_00009.xml
RU29_SECTION_Preamble.xml
输出:
RU29_SCHEDULE_1_00001.xml
RU29_SCHEDULE_2_00002.xml
RU29_SECTION_00001.xml
RU29_SECTION_00002.xml
RU29_SECTION_00003.xml
RU29_SECTION_00004.xml
RU29_SECTION_00005.xml
RU29_SECTION_00006.xml
RU29_SECTION_00007.xml
RU29_SECTION_00008.xml
RU29_SECTION_00009.xml
RU29_SECTION_000010.xml
RU29_SECTION_000011.xml
RU29_SECTION_000012.xml
RU29_SECTION_000013.xml
RU29_SECTION_000014.xml
RU29_SECTION_Preamble.xml
答案 1 :(得分:0)
对字符串中的第一个,第二个和第三个数字进行排序(如果未找到,则第二个和第三个为零)
print my @arr =
map { $_->[0] }
sort {
$a->[1] <=> $b->[1] ||
$a->[2] <=> $b->[2] ||
$a->[3] <=> $b->[3]
}
map {
my ($f, @r) = /\d+/g;
unshift @r, (0) x (2-@r);
[ $_, $f, @r ];
}
<DATA>;
__DATA__
RU29_SCHEDULE_1_00001.xml
RU29_SCHEDULE_2_00002.xml
RU29_SECTION_00001.xml
RU29_SECTION_00002.xml
RU29_SECTION_00003.xml
RU29_SECTION_00004.xml
RU29_SECTION_00005.xml
RU29_SECTION_00006.xml
RU29_SECTION_00007.xml
RU29_SECTION_00008.xml
RU29_SECTION_00009.xml
RU29_SECTION_000010.xml
RU29_SECTION_000011.xml
RU29_SECTION_000012.xml
RU29_SECTION_000013.xml
RU29_SECTION_000014.xml
RU29_SECTION_Preamble.xml
输出
RU29_SECTION_Preamble.xml
RU29_SECTION_00001.xml
RU29_SECTION_00002.xml
RU29_SECTION_00003.xml
RU29_SECTION_00004.xml
RU29_SECTION_00005.xml
RU29_SECTION_00006.xml
RU29_SECTION_00007.xml
RU29_SECTION_00008.xml
RU29_SECTION_00009.xml
RU29_SECTION_000010.xml
RU29_SECTION_000011.xml
RU29_SECTION_000012.xml
RU29_SECTION_000013.xml
RU29_SECTION_000014.xml
RU29_SCHEDULE_1_00001.xml
RU29_SCHEDULE_2_00002.xml