-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" } #### #!/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; #### Global symbol "$switch" requires explicit package name at minus-ess.pl line 7.