getopt

Honza Pazdziora adelton na fi.muni.cz
Úterý Únor 24 20:17:27 MET 1998


Rostislav Matl <xmatl na fi.muni.cz> writes:

> #! /usr/bin/perl -w
> 
> use Getopt::Std;
> 
> #zpracujeme parametry:
> getopt('h');
> if ($opt_h)
>    {
>     print "HELP!";
>     exit 0;
>    }
> 
> Tento jednoduchy skript je pro me zahadou. Nefunguje totiz, jak by mel
> (alespon podle dokumentace). Predpokladal jsem, ze takto zavolana fce
> getopt nastavi promennou $opt_h
> na 1, ovsem nestalo se tak. Na dalsim radku ji uz Perl oznacil za
> neinicializovanou.
> Delam neco spatne?

No, spatne asi ne, spis jinak, nez se predpoklada. Pohledem do zdrojaku
jsem zjistil, ze text

	Pass one argument which is a string containing all switches
	that take an argument. For each switch found, sets $opt_x
	(where x is the switch name) to the value of the argument,
	or 1 if no argument.

je potreba brat vazne (resp. doslova). Cili: ten retezec k getopt je
seznam switchu s argumenty. Ta druha veta z te manove stranky ale
nerika, ze jedine mozne switche jsou ty s argumenty, popsane volanim
getopt. Ta rika, ze pokud je nalezen switch, je zpracovan.

Pokud ale date -h, neni to switch s argumentem, je to proste switch
bez argumentu. A pokud reknete getopt('h'); rikate, ze chcete, aby to
-h ten argument melo. A ono ho nema, a proto se taky zadne $opt_h
nastavovat nebude.

Reseni? getopt('');

Doufam, ze to pomuze,

--
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
                   I can take or leave it if I please
------------------------------------------------------------------------


Další informace o konferenci Perl