Ok so i was wondering how i would go about calling a perl subroutine from the command line. So if my program is Called test, and the subroutine is called fields i would like to call it from the command line like.
test fields
Look into brian d foy's modulino pattern for treating a Perl file as both a module that can be used by other scripts or as a standalone program. Here's a simple example:
# Some/Package.pm
package Some::Package;
sub foo { 19 }
sub bar { 42 }
sub sum { my $sum=0; $sum+=$_ for @_; $sum }
unless (caller) {
print shift->(@ARGV);
}
1;
Output:
$ perl Some/Package.pm bar
42
$ perl Some/Package.pm sum 1 3 5 7
16
Use a dispatch table.
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
sub fields {
say 'this is fields';
}
sub another {
say 'this is another subroutine';
}
my %functions = (
fields => \&fields,
another => \&another,
);
my $function = shift;
if (exists $functions{$function}) {
$functions{$function}->();
} else {
die "There is no function called $function available\n";
}
Some examples:
$ ./dispatch_tab fields
this is fields
$ ./dispatch_tab another
this is another subroutine
$ ./dispatch_tab xxx
There is no function called xxx available
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With