|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Leonid Subbotin 2:5007/16.1 04 Aug 2000 20:25:43 To : All Subject : advenced sort --------------------------------------------------------------------------------
есть например адреса поинтов|нодов
@mas=('2:5007/16.1','2:5007/1','2:5000/123.12','1:345/12');
как ?
вот мой способ, но надеюсь бывает более интересный/красивый/быстрый ?!
@addr=sort {retr($a) <=> retr($b) || retz($a) <=> retz($b) || int(retnp($a))
<=> int(retnp($b)) || length(retnp($a)) <=> length(retnp($b)) || retnp($a) <=>
retnp($b)} @mas; # это все одна строка 8-( )
sub retr {
my $line=shift;
$line=~s/^(\d+)/$1/;
return($line);
}
sub retz {
my $line=shift;
$line=~s/^\d+\:(\d+)/$1/;
return($line);
}
sub retnp {
my $line=shift;
$line=~s/^\d+\:\d+\/([\d\.]+)/$1/;
return($line);
}
Всегда с вами Sln !
--- GoldED+/W32 1.1.4
* Origin: Sln Station (2:5007/16.1)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/20685398ad507.html, оценка из 5, голосов 10
|