Search code examples
perlsubroutine

Calling perl subroutines from the command line


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


Solution

  • 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