#!/usr/bin/perl use warnings; use strict; my %colorhash = ( CCgray => ["0","0","0"], CCwhite => ["1","0","0"], CCgrey => ["0","2","0"], CCBlue => ["0","0","3"], ); print "Original order of data:\n\n"; foreach my $colorname (keys %colorhash) { printf "For key %-7s : ",$colorname; for my $i (0.. $#{ $colorhash{$colorname} } ){ print "element[", $i,"] = $colorhash{$colorname}[$i] "; } print "\n"; } print "\n\n"; my @light2dark = sort lightsort (keys %colorhash); my @dark2light = sort darksort (keys %colorhash); print "Order, dark is ",join(',',@dark2light), ".\n"; print "Order, light is ",join(',',@light2dark), ".\n"; sub darksort { $colorhash{$b}[0] <=> $colorhash{$a}[0] or $colorhash{$b}[1] <=> $colorhash{$a}[1] or $colorhash{$b}[2] <=> $colorhash{$a}[2] } sub lightsort { $colorhash{$a}[0] <=> $colorhash{$b}[0] or $colorhash{$a}[1] <=> $colorhash{$b}[1] or $colorhash{$a}[2] <=> $colorhash{$b}[2] }