1x pouzita promenna?
Honza Pazdziora
adelton na informatics.muni.cz
Čtvrtek Březen 25 13:09:35 MET 1999
>
> use lib '/cfgdir';
Ano.
> | require 'ezarchive.cfg'; # Vyse uvedeny soubor
> |
> | die "Parameter error"
> | unless defined($Conf::archive{$list});
> | ..
> |
> | Problem je, ze pokud to pouziju takto, nadava mi perl, ze Conf::archive
> | je pouzito v hlavnim programu pouze jednou a ze je to mozny preklep.
> | Pokud na konci uvedu "%Conf::archive = ()" nebo podobny nesmysl, uz je
> | spokojeny.
>
> to se zarizuje tak, ze se muze nadefinovat
>
> use vars ($Conf::archive);
No, tak jednak
use vars qw! %Conf::archive !;
protoze jinak bude vysledek
'' is not a valid variable name,
ale stejne to neni dobre, protoze kdyz to vyzkousis, tak se dozvis
Can't declare another package's variables.
Use vars je na to, abych se mohl na globalni promenne ve svem
namespacu odkazovat bez celeho jmena package.
> ale mozna by stacilo v tom Conf ty promenne oznacit jako my.
Ne. To by byla promenna lokalni tomu souboru a nebyla by videt.
Nehlede na to, ze neni mozne rict my $Conf::archive:
"my" variable $Conf::archive can't be in a package
> | 1) Jak je zvykem pouzivat konfiguracni soubory, psane primo v Perlu?
>
> Zhruba tak, jak pises.
Vidim tak tri moznosti: bud to nechas jako cfg a ten require se obali
BEGINem. Ta hlaska se totiz vyskytuje proto, ze po kompilaci jeste
nebyl ten require provedeny a Perl tudiz o existenci %Conf::archive
nevim. Cili
BEGIN { require 'ezarchive.cfg' }
Druha moznost je prejmenovat to na neco jako ezarchivecfg.pm a rict
use ezarchivecfg;
coz bude mit v podstate stejny efekt.
Treti moznost je rict no vars, ale to asi nechceme.
> | 2) Pokud je v poradku vyse popsane pouziti konfiguracniho souboru,
> | jak co nejcisteji zamezit podobnym warningum?
>
> Zkusil bych to my do Conf prip. pak to use vars to hlavniho programu
Ne, ani jedno ;-)
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
make vmlinux.exe -- SGI Visual Workstation Howto
------------------------------------------------------------------------
Další informace o konferenci Perl