[EMAIL PROTECTED] (TapasranjanMohapatra) writes:
> Now I use this module in another script. I want to call the sub routines, as
> suggested by the argument passed to the script.
> i.e.
> my_script q should call the sub routine zzzq,
> my_script e should call the sub routine zzze,
> ...
>
> when there are many sub routines,
> if i get the name of subroutine as
>
> $name = "zzz".$argument_received;
>
> can I call the sub routine as
>
> abc::$name;
>
> This does not work.
> Any suggestion, to get this done?
I'm guessing that your primary mission objective is to parse one of
several commands at run-time ...
Here is one of my favorite idioms for that is to use a simple hash of
coderefs as a dispatch table.
Dealing with parameters is left as an exercise to the reader.
###################################################
# in abc.pm:
###################################################
use strict;
use warnings;
package abc;
sub hello {
print "Hello world!\n";
return 1;
}
sub goodbye {
print "I say hello - you say goodbye\n";
return 0;
}
sub cookie {
print "`C' is for cookie, that's good enough for me\n";
return 1;
}
1;
##################################################
# test.pl
##################################################
#!/usr/bin/perl
use strict;
use warnings;
use lib '/tmp'; # or wherever abc lives.
use abc;
print "Valid commands are `hello', `goodbye', and `cookie'\n";
my $continue = 1;
while($continue) {
print "Enter a command: "; chomp(my $command = <STDIN>);
my %dispatch = ( hello => \&abc::hello,
goodbye => \&abc::goodbye,
cookie => \&abc::cookie ) ;
if (exists($dispatch{$command})) {
$continue = &{$dispatch{$command}};
} else {
warn "Unimplemented command: $command\n";
}
}
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Lawrence Statton - [EMAIL PROTECTED] s/aba/c/g
Computer software consists of only two components: ones and
zeros, in roughly equal proportions. All that is required is to
sort them into the correct order.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>