算是備忘吧。code
一、有這麼些字符串:排序
cold_10hr cold_5hr drought_2hr heat_24hr salt_1hr cold_1hr drought_10hr drought_5hr heat_2hr salt_24hr ...
但願先按照字母(即 cold 等)排序,而後按照數字(好比 10, 5, 2 ...)排序。 解決方案:字符串
# 假設它們存儲在 @names 中 @names = map { $_->[0] } sort { $a->[1] cmp $b->[1] or $a->[2] <=> $b->[2] } map { [ $_, /^(\D+)(\d+)/ ] } @names;