http://www.perlmonks.org?node_id=54671

deprecated has asked for the wisdom of the Perl Monks concerning the following question:

Greetings, Monks.

I was recently turned on to perl -s as a way to parse command line options (please, I dont want to know about any more command line options modules, its way overkill).

So, without further ado, from perldoc perlrun:

-s enables rudimentary switch parsing for switches on the command line after the program name but before any filename arguments (or before a --). Any switch found there is removed from @ARGV and sets the corresponding variable in the Perl program. The following program prints "1" if the program is invoked with a -xyz switch, and "abc" if it is invoked with -xyz=abc. #!/usr/bin/perl -s if ($xyz) { print "$xyz\n" }
So I am taken to understanding that I can then use an option from the command line to have $xyz (or $switch, as used in the example below) defined.

Here's a relevant example:

#!/usr/bin/perl -ws # minus-ess.pl use strict; # if we run it ./minus-ess.pl -switch "foo" it should be defined. my $switch = "hooray" unless (defined $switch); print $switch;

which yields us:

Global symbol "$switch" requires explicit package name at minus-ess.pl + line 7.
I guess then what I need to do is "turn off" strict while I am parsing the command-line options. My idea was to use an anonymous code block ( { ... } ) turn off strict in there, and then just close it.

thanks,
dep.
--
i am not cool enough to have a signature.