Here’s an example of what I mean
use SOAP::Lite +trace => [ qw( debug ) ];
So what is +trace in SOAP::Lite? I’m guessing it is part of a package scoped hash? I mean if I wanted to implement similar syntax into one of my modules how would I do it?
How would this work if I also needed to import symbols, e.g.
use Foo qw( some_function );
Would this work?
use Foo qw( some_function ) +option => 'bar';
would any additional magic be needed in the module that allows you to pass things like this?
note: not sure I like the title of the question, feel free to reword
When you do
use Foo @args, what happens behind the scenes is equivalent to this:So in this case,
use SOAP::Lite +trace => [ qw( debug ) ]gets turned into animportcall like this:Precisely how one implements the
importroutine is up to the module author. Most modules use the standardimportprovided byExporter, but you can put anything you want there and it will be executed atusetime.