Показать сообщение отдельно
Старый 08.11.2002, 12:09
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 2  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
Если не заморачиваться с хэшами, многомерными массивами, объектами и т.п. то вот простой вариант:
Код:
$datafile = "Ваня|10|Москва\n".
            "Петя|5|Уфа\n".
            "Иван|7|Питер";
@data = split(/\r?\n/,$datafile);
@sortdata = &mysort(1,1,0,@data);
...
exit;

sub mysort {
  my $field = shift; # - номер поля для сортировки
  my $type = shift; # - тип поля (0-стринг, 1-число)
  my $revers = shift; # - 1=обратная сортировка
  my @result = @_;
  if ($type) {
    @result = sort {
      my @data1 = split(/\|/,$a);
      my @data2 = split(/\|/,$b);
      return $data1[$field]<=>$data2[$field];
    } @result;
  } else {
    @result = sort {
      my @data1 = split(/\|/,$a);
      my @data2 = split(/\|/,$b);
      return ($data1[$field] lt $data2[$field]) ? -1 : ($data1[$field] gt $data2[$field]) ? 1 : 0;
    } @result;
  }
  @result = reverse @result if ($revers);
  return @result;
}
__________________
Two beer or not two beer?...