Forum Webscript.Ru

Программирование => Perl => Тема начата: Paul56 от 26 Июня 2005, 22:59:43

Название: хитрая сортировка массива
Отправлено: Paul56 от 26 Июня 2005, 22:59:43
допустим есть:
$ms[1] = "news1.htm";
$ms[2] = "news10.htm";
$ms[3] = "news2.htm";
$ms[4] = "news3.htm";

а как сделать:
news1.htm news2.htm news3.htm news10.htm

наверное через sort, но не помогает.
Буду очень признателен за помощь!
Название: хитрая сортировка массива
Отправлено: Green Kakadu от 26 Июня 2005, 23:19:15
@ordered = map { $_->[1] }
           sort { $a->
           map { [news_num($_ ), $_] }
           @ms;

sub news_num {
my $str=shift;
if ($str=~/news(\\d+)\\.htm/) {
return  $1;
}
else {
return 999;
}
}
Название: хитрая сортировка массива
Отправлено: Paul56 от 27 Июня 2005, 00:23:52
Green Kakadu
Спасибо большое исключительно ;-)
Название: хитрая сортировка массива
Отправлено: Green Kakadu от 27 Июня 2005, 01:53:20
Perl CookBook Recipe 4.16 Sorting a List by Computable Field