$c1 = [ $r, $g, $b ]; $c2 = contrasting_colour( @c1 ); sub contrasting_colour { my ( $c ) = @_; my ( $r, $g, $b ) = ( 255 - $c->[0], 255 - $c->[1], 255 - $c->[2] ); return [ $r, $g, $b ]; } sub rgb2hash { my ( $c ) = @_; my ( $r, $g, $b ) = ( 255 - $c->[0], 255 - $c->[1], 255 - $c->[2] ); return sprintf "#%02X%02X%02X", $r, $g, $b; } #### sub contrasting_colour { my ( $c ) = @_; my ( $r, $g, $b ) = ( ($c->[0] + 128) % 256, ($c->[1] + 128) % 256, ($c->[2] + 128) % 256, ); return [ $r, $g, $b ]; }