Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Detecting an undefined hash key

by GrandFather (Saint)
on Oct 01, 2008 at 10:52 UTC ( [id://714776]=note: print w/replies, xml ) Need Help??


in reply to Detecting an undefined hash key

Although the Getopt::Std documentation doesn't seem to mention it, -t and -s are special. Consider:

use strict; use warnings; use Getopt::Std; use Data::Dump::Streamer; testSwitches (qw(-p -q)); testSwitches (qw(-s)); testSwitches (qw(-t)); testSwitches (qw(-s -t)); testSwitches (qw(-p)); sub testSwitches { local @ARGV = @_; my %opt; my $test; print join (' ', @ARGV), "\n"; getopt ('st', \%opt); Dump \%opt; print "\n"; }

Prints:

-p -q $HASH1 = { p => 1, q => 1 }; -s $HASH1 = { s => undef }; -t $HASH1 = { t => undef }; -s -t $HASH1 = { s => '-t' }; -p $HASH1 = { p => 1 };

Is this some sort of *nix convention perhaps?

Note that you could use exists for your test instead of defined. You could also reduce the number of parenthesis to make the code more readable:

if (! exists $opt{s} and ! exists $opt{t}) {

Update: Struck silliness. Left code as a nice template for playing with/testing/demonstrating option processing.


Perl reduces RSI - it saves typing

Replies are listed 'Best First'.
Re^2: Detecting an undefined hash key
by JavaFan (Canon) on Oct 01, 2008 at 11:36 UTC
    Nothing special going here. But with 'getopt ("st")', you declare -s and -t to take an argument. So, if you just provide -s, the argument is undef. If you provide -s -t, -t is the argument of -s.

      Doh! /me slaps forehead with a wet fish!


      Perl reduces RSI - it saves typing

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://714776]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2025-12-15 02:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What's your view on AI coding assistants?





    Results (95 votes). Check out past polls.

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.