In general, "if defined($ARGV[0])" is good for checking individual elements.
If an element contains the value "0", for example, then it will fail the "if
$ARGV[0]" test, even though there IS a value there, which may be valid.  

"if defined(@ARGV)" is not really necessary because the only time the value
of @ARGV in scalar context will be 0 is if it is empty.


-----Original Message-----
From: Cliff [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 27, 2003 3:37 PM
To: Geaslin, Andrew - GPB
Cc: [EMAIL PROTECTED]
Subject: RE: Detecting $ARGV[0]


I also agree that the modules mentioned are great things ... for times when 
modules are needed.

Otherwise, I am a fan of:

if (@ARGV) do {blah;}

Of course, "defined" is good too, for the pedantic.

Sometimes modules are great, sometimes they are overkill ;)


-~.-~.-~.-~.-~.-~.-~.-~.-~.-~
-~
-~  Cliff Frensley
-~  [EMAIL PROTECTED]
-~  Seattle, WA
-~
-~
-.

On Mon, 27 Jan 2003, Geaslin, Andrew - GPB wrote:

> I agree that GetOpt::Std or GetOpt::Long are excellent (I use them often).
> But if you want to roll your own you can treat @ARGV like any other array.
> 
> if (@ARGV)
>    {  print "parameters present\n";
>    }
> else
>    {  print "no parameters\n";
>    }
> 
> 
> 
> -Andrew
> 
> 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> There are other caveats to be aware of as well when it comes to writing
your
> own switches.  I would recommend looking into the GetOpt::Std module that
> comes standard with Perl.  It can do what you want and comes out much
> cleaner.
> 
> 
> 
> Is there a better way to detect a parameter given in a command line?  For
> example, to run the script (obviously) c:\>script.pl   I have also added
> some "switches" to help with setup of the options (like) c:\>script.pl /h
> to see a help message
> c:\>script.pl /i    to generate a new options file, etc.  And it is all
> working well.
> 
> Question:  When NOT using a switch (just running the script), I am getting
> a message I would like to supress or preferable fix by using more correct
> code...
> Use of uninitialized value in string ne at logsaver.pl line 33.
> 
> This is of course because I have not included a /h or /i value.  The
script
> runs, but I would prefer it ran cleanly with no message.
> 
> Code is this....
> # if no parameters passed, skip.  If something passed, then do.
> if($ARGV[0] ne ""){ do this stuff; }
> 
> Thank you!
> 
> 
> Glenn Meyer
> 
> 
> _______________________________________________
> Perl-Win32-Admin mailing list
> [EMAIL PROTECTED]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> _______________________________________________
> Perl-Win32-Admin mailing list
> [EMAIL PROTECTED]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> _______________________________________________
> Perl-Win32-Admin mailing list
> [EMAIL PROTECTED]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> 

_______________________________________________
Perl-Win32-Admin mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
_______________________________________________
Perl-Win32-Admin mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to