After a quick glance, I'd move the use Data::Dumper; from the middle of the script to the top of it. That keeps all of your use statements together so it's easy to see exactly what you're using at a glance, and also if you ever lose the requirement of the Dumper statements, you may forget to remove the use statement (because it is buried) which will load the module unnecessarily.
One other thing is that I'd do a check to ensure the correct number of args are passed in. Change this:
my( $server1, $server2 )= @ARGV;
...to something like this:
die "Usage: script.pl server1 server2" if @ARGV != 2;
my ($server1, $server2) = @ARGV;