# show that sorting has changed from 5.6.1 to 5.8.8 use strict; use warnings; use Test::More tests => 1; # I would expect ties to come out in the order in which they are # received. 5.8.8 seems to do that, 5.6.1 does not. my @unordered = ( { pos => 3, val => 0 }, { pos => 5, val => 1 }, { pos => 4, val => 0 }, { pos => 1, val => -1 }, { pos => 2, val => -1 }, { pos => 6, val => 1 }, { pos => 0, val => -2 }, ); my @ordered = sort { $a->{pos} <=> $b->{pos} } @unordered; my @result = sort { $a->{val} <=> $b->{val} } @unordered; is_deeply( \@result, \@ordered ); diag("Your Perl is $]."); diag( "expected val: " . join( ",", map { $_->{val} } @ordered ) ); diag( " result val: " . join( ",", map { $_->{val} } @result ) ); diag( "expected pos: " . join( ",", map { $_->{pos} } @ordered ) ); diag( " result pos: " . join( ",", map { $_->{pos} } @result ) ); #### 1..1 ok 1 # Your Perl is 5.008008. # expected val: -2,-1,-1,0,0,1,1 # result val: -2,-1,-1,0,0,1,1 # expected pos: 0,1,2,3,4,5,6 # result pos: 0,1,2,3,4,5,6 #### 1..1 not ok 1 # Failed test at wtf.pl line 24. # Structures begin differing at: # $got->[5]{pos} = '6' # $expected->[5]{pos} = '5' # Your Perl is 5.006001. # expected val: -2,-1,-1,0,0,1,1 # result val: -2,-1,-1,0,0,1,1 # expected pos: 0,1,2,3,4,5,6 # result pos: 0,1,2,3,4,6,5 # Looks like you failed 1 test of 1.