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:
BEGIN {
require 'Foo.pm';
Foo->import( @args );
};
So in this case, use SOAP::Lite +trace => [ qw( debug ) ] gets turned into an import call like this:
SOAP::Lite->import( '+trace' => [ 'debug' ] );
Precisely how one implements the import routine is up to the module author. Most modules use the standard import provided by Exporter, but you can put anything you want there and it will be executed at use time.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With