Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Accessing the __DATA__ blocks of other packages

by Aristotle (Chancellor)
on Dec 14, 2002 at 23:53 UTC ( #219916=note: print w/replies, xml ) Need Help??

in reply to Accessing the __DATA__ blocks of other packages

No need for eval or other heavy artillery.
package TMPL; sub fodus { local $/; my $out = <($main::{+(caller)[0]."::"}->{DATA})>; # ... return $out; }
The key here is that Perl makes the symbol table of each package available as a hash called %%packagename:: - with %main:: containing keys for all packages including itself, the value being a glob pointing in turn to that package's symbol table. So I use %main:: to get the glob to the caller's package, then dereference it as a hash, fishing the DATA key from it in turn.

Makeshifts last the longest.

Replies are listed 'Best First'.
Re: Re: Accessing the __DATA__ blocks of other packages
by pfaut (Priest) on Dec 15, 2002 at 00:02 UTC

    Sneaky. (I've stashed it away for possible future use.)

    --- print map { my ($m)=1<<hex($_)&11?' ':''; $m.=substr('AHJPacehklnorstu',hex($_),1) } split //,'2fde0abe76c36c914586c';

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://219916]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2022-08-08 22:35 GMT
Find Nodes?
    Voting Booth?

    No recent polls found