Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^2: Old Code reference wants new life as Object.

by Devanchya (Beadle)
on Dec 08, 2006 at 19:04 UTC ( [id://588672]=note: print w/replies, xml ) Need Help??


in reply to Re: Old Code reference wants new life as Object.
in thread Old Code reference wants new life as Object.

Thanks for the responces... I am trying to maintain the depatch table at this time, as it is integrated into the main program preety heavly. If there is a better way to do it with out loosing the dynamic option, then that most likely would work. I considered using inheritance etc but it didn't work right for the option.

Right now each of the existing plugin's have a load section which loads a code reference into a global dispatch hash:
$dispatch{login} = \&login;
$dispatch{slogin} = \&secure_login;
The script then uses a value of a specific varible to determin what to do.
$dispatch{default} = \&show_option_menu; #if nothing else we will show the menu

$dispatch->{$dothis_now}->() # does the code ref.

Now as you can tell, doing a code ref with \&login for example will work. It will not run the code when loaded into the hash, and waits nicely until it is wanted.

$dispatch{self_test} = $self->login;

Will execute the code before it is placed in the hash.

I have not yet tested the other options given, but will as soon as I'm next to my development machine. But hopefully this clears it up a bit.

It may be both the calling and the plugin code need to be 'fixed' to work properly.

--

Even smart people are dumb in most things...
  • Comment on Re^2: Old Code reference wants new life as Object.

Replies are listed 'Best First'.
Re^3: Old Code reference wants new life as Object.
by revdiablo (Prior) on Dec 08, 2006 at 23:11 UTC

    In that case, the easiest thing to do is probably:

    $dispatch{self_test} = sub { $self->login };

    This will create an anonymous code reference that makes a closure on $self, so everything should be in place when the code actually gets called.

    Update: Er, which is exactly what ikegami responded with. I guess I should have re-read the original replies before posting.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (3)
As of 2024-04-20 01:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found