Podivnost pri use vars

Honza Pazdziora adelton na fi.muni.cz
Pátek Říjen 19 13:29:48 MEST 2001


On Fri, 19 Oct 2001 05:50:42 GMT, Pavel Šmerk <xsmerk na informatics.muni.cz> wrote:
> 
> $ cat pokus.pl
> #!/usr/bin/perl -w
> use strict;
> my @vars = qw($pokus);
> use vars @vars;
> $pokus = "ahoj\n";
> 
> $ perl -c pokus.pl
> Global symbol "pokus" requires explicit package name at pokus.pl line 5.
> 
> pokus.pl had compilation errors.
> 
> Proc nelze pouzit use vars @nejaky_seznam?

Ale jde, ale ne takto. Primarne proto, ze use vars je compile time
direktiva. A v compile time v tom @vars jeste nic prirazeno nemas.
To, ze je to compile time mu davas najevo i tim -c.

Reseni je vnutit mu to prirazeni do @vars uz pri kompilaci:

$ perl -c
use strict;
my @vars;
BEGIN { @vars = qw($pokus); }
use vars @vars;
$pokus = "ahoj\n";
__END__
- syntax OK

Doufam, ze to pomuze.

[ Pokud ma snad jeste nekdo nejakou nejasnost ohledne asynchronnosti
  kompilace skriptu v Perlu, tak by bylo dobre je rict hned, at to
  vyresime jednou provzdy. ;-]

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
Petition for a Software Patent Free Europe http://petition.eurolinux.org
------------------------------------------------------------------------


Další informace o konferenci Perl