Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

pudge (1)

  (email not shown publicly)
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.
More | Login | Reply
Loading... please wait.