http://qs321.pair.com?node_id=219176

caedes has asked for the wisdom of the Perl Monks concerning the following question:

I have a subroutine that is called from many other packages. I need this subroutine to read the contents of __DATA__ from the package that called it and then do something with it (__DATA__ will contain a default template for html output). I have tried something like this:
package TMPL; sub fodus { my $caller = (caller(0))[0]; my $out = join('',<{$caller .'::DATA'}>); # do stuff to $out return $out; }
but that didn't work. I even tried this just to see if it would work if I hard-coded in the caller's package name:
package TMPL; sub fodus { my $out = join('',<Caller::DATA>); # do stuff to $out return $out; }
But it still complained that Caller::DATA was only used once. In both of these examples I'm using strict with warnings. So how exactly can I access the contents of __DATA__ in a different package?

-caedes