in reply to Method call to tied hash leads to file read error

You've just experienced the joy of $_. The problem is that while (<FH>) doesn't local'ize $_. Consider this:

You write:

print $obj2->{$_} for (qw|my_method|);
So now $_ is set to a read-only value. Then eventually from within that call we get to this line:
while (<IN>) {
... which is syntactic sugar for:
while (defined($_ = <IN>)) {
You see that this line is assigning to $_ (still containing the read only 'my_method'). while didn't local'ize $_!! This is a common trap, and I know someone has written an extensive writeup about this particular trap among many CPAN modules.

In short, put local $_; right above the while (<IN>) line, and things should work fine.

blokhead