Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^3: Using import to generate subroutines

by tachyon (Chancellor)
on Nov 24, 2004 at 03:13 UTC ( [id://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

Replies are listed 'Best First'.
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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://410045]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2024-04-19 15:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found