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

I have a module which uses Filter::Simple and I would like to know while filtering the name of the module that I'm filtering. Is there any way to do that?

Replies are listed 'Best First'.
Re: Determining a module's user
by Fletch (Chancellor) on Oct 10, 2007 at 16:37 UTC

    caller looks to work sanely inside the Filter::Simple called block (at least with a quick test module).

    $ cat package FSTest; use Filter::Simple; FILTER { print STDERR "in FILTER, caller package: ", (caller( 1 ))[0], "\n"; } 1; $ perl -MFSTest -e 0 in FILTER, caller package: main

    Update: Oop. Quick test module FTL then apparently. You may can get at it by calling caller in a custom import sub of your own, of you might have to fall back to using Filter::Util::Call instead. We're past my simple experience with Filter::Simple at any rate.

      For me (Windows/Activestate 5.8) it doesn't. If "main" calls "package" and "package" uses the filtering module, (caller( 1 ))[0] returns not "package" but "main".

      I've found a poor work around that involves "use myFilter __PACKAGE__;".

      Thanks, Fletch!
      --- it seems to be (caller(1))[1]!