why does below not work?
cat ./arg_getopt.pl
#/usr/bin/perl -w
#
#
use strict;
use diagnostics;
use Getopt::Long;
sub usage {
print "this is wrong\n";
exit 0;
}
sub san_check_arg {
usage () if $#ARGV != 0;
#return if defined($$server;
#return if defined($$proc);
#return if defined($$prog);
if defined($server)
return ($server);
} elsif (defined($proc && $prog)) {
return ($proc,$prog);
} else {
usage();
}
}
my $val1 = eval { GetOptions (
"help" => sub { usage() },
"server=s" => \$server,
"process=s" => \$proc,
"program=s" => \$prog
)};
die usage() if $@; #alone
if (!$val1) {
usage();
}
my ($server, $proc, $prog);
my @ar = san_check_arg(); #check users input sanity
[root@localhost pra]# perl -c !$
perl -c ./arg_getopt.pl
syntax error at ./arg_getopt.pl line 19, near "if defined"
Global symbol "$server" requires explicit package name at ./arg_getopt
+.pl line 19.
Global symbol "$server" requires explicit package name at ./arg_getopt
+.pl line 20.
syntax error at ./arg_getopt.pl line 21, near "} elsif"
./arg_getopt.pl had compilation errors (#1)
(F) Probably means you had a syntax error. Common reasons include
+:
A keyword is misspelled.
A semicolon is missing.
A comma is missing.
An opening or closing parenthesis is missing.
An opening or closing brace is missing.
A closing quote is missing.
Often there will be another error message associated with the synt
+ax
error giving more information. (Sometimes it helps to turn on -w.
+)
The error message itself often tells you where it was in the line
+when
it decided to give up. Sometimes the actual error is several toke
+ns
before this, because Perl is good at understanding random input.
Occasionally the line number may be misleading, and once in a blue
+ moon
the only way to figure out what's triggering the error is to call
perl -c repeatedly, chopping away half the program each time to se
+e
if the error went away. Sort of the cybernetic version of S<20
questions>.
Uncaught exception from user code:
syntax error at ./arg_getopt.pl line 19, near "if defined"
Global symbol "$server" requires explicit package name at ./arg_getopt
+.pl line 19.
Global symbol "$server" requires explicit package name at ./arg_getopt
+.pl line 20.
syntax error at ./arg_getopt.pl line 21, near "} elsif"
./arg_getopt.pl had compilation errors.
at ./arg_getopt.pl line 21