Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
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 chanting in the Monastery: (14)
As of 2015-07-01 19:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (17 votes), past polls