[Moscow.pm] Вставка в спиоск в определенное место

Denis Evdokimov evdokimov.denis на gmail.com
Пн Дек 7 05:00:43 PST 2009


Как-то так?

#!/usr/bin/perl
use strict;
use warnings;

use Data::Dumper;

my $sort_index2 = 0;

my @a = (
          {
             name        => 'a',
             sort        => 0,
             sort_index2 => ++$sort_index2,
          },
          {
             name        => 'b',
             sort        => 4,
             sort_index2 => ++$sort_index2,
          },
          {
             name        => 'c',
             sort        => 10,
             sort_index2 => ++$sort_index2,
          },
);

push @a,
  {
    name        => 'd',
    sort        => 0,
    sort_index2 => ++$sort_index2,
  };

print Dumper \@a;
@a = sort my_sort @a;
print Dumper \@a;


sub my_sort
{
    my $answer;
    if ( $a->{sort} > $b->{sort} )
    {
        $answer = 1;
    }
    elsif ( $a->{sort} < $b->{sort} )
    {
        $answer = -1;
    }
    else
    {
        $answer = 0;
    }

    if ( $answer == 0 )
    {
        if ( $a->{sort_index2} > $b->{sort_index2} )
        {
            $answer = -1;
        }
        else
        {
            $answer = 1;
        }
    }
return $answer;
}


Подробная информация о списке рассылки Moscow-pm