Perl のリファレンス

Perl でリファレンスを使ってモノを参照しようとすると、

use strict;

sub foo {
    my %h = ("a" => "b", "c" => "d");
    return \%h;
}

my $k = "a";
my $r = foo();
print "X: " . $r->{$k} . "\n";
print "Y: " . ${$r}{$k} . "\n";
print "Z: " . $$r{$k} . "\n";

のように3とおりのやりかたがあるらしい。どれがいいんだろう?