Why does this not work

Why does this not give flinstone and rubble?

$fn{"fred"} = "flintstone";
$fn{"barney"} = "rubble";
foreach $per (qw barney fred >) {
print " he's $per $fn($per).\n";
}