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

Re^3: Using import to generate subroutines

by tachyon (Chancellor)
on Nov 24, 2004 at 03:13 UTC ( #410045=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Using import to generate subroutines
in thread Using import to generate subroutines

An AUTOLOAD for dbms_random_random has no (easy) way to figure out if it is supposed to call dbms_random.random or dbms.random_random.

Well actually you have the same problem if you are exporting functions with the added disadvantage of tons of redundant code.

sub AUTOLOAD { my ( undef, $funcname ) = split '::', $AUTOLOAD; my $mapping = { foo => 'foo.bar', bar => 'foobar', }; if ( exists $mapping->{$funcname} ) { # exec $mapping->{$funcname} } else { die "Can't do $funcname, NFI how to!\n"; } }

cheers

tachyon


Comment on Re^3: Using import to generate subroutines
Download Code
Re^4: Using import to generate subroutines
by Thilosophy (Curate) on Nov 24, 2004 at 05:26 UTC

    I said: An AUTOLOAD for dbms_random_random has no (easy) way to figure out if it is supposed to call dbms_random.random or dbms.random_random.

    You said: Well actually you have the same problem if you are exporting functions with the added disadvantage of tons of redundant code.

    I think I could get around the naming problem by explicitly exporting subroutines (and not using AUTOLOAD)

    use MyProcedures qw (dbms_random.random ); # this creates: sub CallingPackage::dbms_random_random { # call dbms_random.random in the database }

    So the subroutine you get has actually a different name than what you asked for, which admittedly is a bit strange.

    I do not get the part about the "tons of redundant code". The subroutines are only created when imported, and they are very slim (just one peppered subroutine call each).

    I put the module in my scratchpad if you want to have a look. Unless it turns out to be totally flawed I want to publish it to CPAN this week.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (9)
As of 2014-12-18 03:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (41 votes), past polls