Stories
Slash Boxes
Comments

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

pudge (1)

pudge
  (email not shown publicly)
http://pudge.net/
AOL IM: Crimethnk (Add Buddy, Send Message)

I run this joint, see?

Journal of pudge (1)

Wednesday February 07, 2007
04:19 PM

-s: Not Just For File Sizes!

[ #32336 ]

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:

-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;

If I call bbeditp Finder, it looks for a perl module named "Finder", and opens it as an text window in BBEdit. If I call bbeditp -g Finder, it looks for a glue doc file for the application "Finder".

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.