in reply to Re^2: Passing Parameters to subroutine
in thread Passing Parameters to subroutine
That's how it is supposed to work. You must distinguish between input subs - i.e. get-opt-handlers - and processing subs.
from Getopt::Long#User-defined-subroutines-to-handle-options
... For a scalar or array destination, the second argument is the value to be stored.
For a hash destination, the second argument is the key to the hash, and the third argument the value to be stored. It is up to the subroutine to store the value, or do whatever it thinks is appropriate.
Please note that it's possible to call --option arg1 arg2 arg3 and these arguments need to be processed via 'test=s@' => \&test
In your case of a scalar option, the meaning of "test 1" is
OUTPUT:use strict; use warnings; use Getopt::Long; GetOptions( 'demo' => \&demo, 'test!' => \&test ) or die("Error in command line arguments\n"); sub test { die "expected 2 args" if @_ != 2; warn join ",",@_; # demo("hello", "world"); } __DATA__
C:/Strawberry/perl/bin\perl.exe -w d:/tmp/pm/getopt_long.pl --no-test test,0 at d:/tmp/pm/getopt_long.pl line 16, <DATA> line 28.
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
|
|---|