#! perl -slw use warnings; use strict; use Data::Dumper; use Algorithm::Diff qw( diff ); { package myFloats; use overload 'cmp' => \&cmp, '""' => \&stringy; sub new{ return bless \$_[ 1 ], $_[ 0 ] } sub cmp{ printf "$_[ 0 ] cmp $_[ 1 ] : "; my $rv = abs( ${ $_[ 0 ] } - ${ $_[ 1 ] } ); printf "(%32.32f) : %d\n", $rv, !($rv <= 0.15)||0; return ! ( $rv <= 0.15 ); } sub stringy{ ${ $_[ 0 ] } } } my @a = map{ myFloats->new( $_ ) } qw( 1.0 2.1 3.2 4.0 4.9 5.8 ); my @b = map{ myFloats->new( $_ ) } qw( 1.0 2.0 3.0 4.0 5.0 6.0 ); my @d = diff( \@a, \@b ); print "\n@a\n@b\n"; print "@$_" for map{ @$_ } @d;