Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Key-Board Interactive Perl Application

by GrandFather (Sage)
on Dec 12, 2012 at 05:44 UTC ( #1008453=note: print w/replies, xml ) Need Help??


in reply to Key-Board Interactive Perl Application

For that sort of application I use light weight OO. Consider:

use strict; use warnings; my $obj = bless {indent => '...'}; for my $suffix (qw(hello world)) { my $func = $obj->can("print_$suffix"); next if ! $func; $func->($obj, " (suffix was $suffix)"); } sub print_hello { my ($self, $suffix) = @_; print "$self->{indent}hello$suffix\n"; } sub print_world { my ($self, $suffix) = @_; print "$self->{indent}world$suffix\n"; }

Prints:

...hello (suffix was hello) ...world (suffix was world)

There are a few subtle things going on there. If you've not used OO before notice that the object ($obj) carries along a hash reference so you can provide common information (see how 'indent' is used).

The reason the sub names have a 'print_' prefix is so that user provided names can't be used to call unintended subs.

True laziness is hard work

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1008453]
help
Chatterbox?
[Lady_Aleena]: shmem, I don't think any of my modules could be converted to OO. They are too procedural.
[Lady_Aleena]: Now I will see if my perl-fu is as bad as I think it is.
[shmem]: ah, geany uses its own idea of tags. Ah well...
[Lady_Aleena]: My perl-fu is bad.

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (10)
As of 2017-04-27 12:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I'm a fool:











    Results (506 votes). Check out past polls.