#!/usr/bin/perl use strict; my %hash = ( foo => 'bar'); sub meth { my ($h,$k) = @_; my $string = sprintf 'print $%s{%s},"\n"', $h, $k; eval $string; }; meth('hash','foo'); __END__ bar