So apparently a lot of people do not know about -s. Not the file test for size, but the command-line switch. From the docs:
< blockquote >-s enables rudimentary switch parsing for switches on the command line after the program name but before any filename arguments (or before an argument of --). This means you can have switches with two leading dashes (--help). 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" }
Do note that --help creates the variable ${-help}, which is not compliant with "strict refs".
I use this a lot. A good 20 or so of the scripts I keep in my private bin directory have it, and I use it fairly often for one-offs too. Here's an example, from my bbeditp script:
#!/usr/bin/perl -s our $g; my $prog = $g ? 'gluedoc' : 'perldoc'; my $doc = shift; open STDOUT, "|bbedit --view-top --clean -t $doc"; system $prog, '-t', $doc;
system(
'...',
-s, 'something',
-v,
...
);
Re:Strings
bart on 2007-02-07T22:18:50
It would have been, if you had it followed by=>
instead of a plain comma.
It's great for CGI programs too!
Re:I Love This Flag!
phaylon on 2007-02-08T00:39:29
register_globals ftw!:)