#!/usr/bin/perl -w

use strict;

my %tmp = (
  "key1" => 3,
  "key2" => 6,
  "key3" => 1,
  "key4" => 3,
);

my %sorted_by_values = ();

for my $key ( keys %tmp ) {
	my $value = $tmp{ $key };
	
  	if ( exists $sorted_by_values{ $value } ) {
    	push @{ $sorted_by_values{ $value } }, $key;
  	} else {
    	$sorted_by_values{ $value } = [ $key ];
  	}
}

for my $value ( sort keys %sorted_by_values ) {
	for my $key ( sort @{ $sorted_by_values{ $value } } ) {
  		printf "%s => %d\n", $key, $value;
	}
}