use strict a pouzivani spolecnych promennych bez explicitniho uvedeni baliku
Pavel ©merk
xsmerk na informatics.muni.cz
Pondělí Březen 11 11:48:23 MET 2002
Honza Pazdziora wrote:
> On Mon, 11 Mar 2002 06:44:30 GMT, Pavel ©merk <xsmerk na informatics.muni.cz> wrote:
>>Mam asi trochu chaos v typeglobech kombinovanych s use strict
>>vynucujicim my promenne. Chtel bych dosahnout toho, abych zaroven mohl
>>mit use strict a zaroven aby se %options v baliku a %options v main
>>odkazovaly na stejny hash. Bez use strict bych mohl delat nejaka kouzla
>>typu *options = \%::options, ale use strict mi vynuti my %options a pak
>>uz zminena konstrukce nelze pouzit. Lze to nejak obejit bez pouziti our
>>(nechci require 5.6.0), use vars (obsolete) a Exporteru (zbytecne
>>slozite)? Nejak jsem z vars.pm ani Exporter[/Heavy].pm nedokazal vycist,
>>co udelaji tak specialniho, ze use strict obelsti.
>
> Jakkoli mi ty podminky prijdou divne a doporucil bych pouzivat
> skalarni promennou jako referenci na anonymni hash, tak splneni Tveho
> snu je napriklad
>
> $ perl
> package A;
> use strict;
> %::options = ( 'a' => 123 );
> package main;
> use strict;
> print $::options{'a'}, "\n";
> __END__
> 123
Neni. Muj sen je %options = ... a print $options{a}. V podstate to, co
umi our:
$ perl
use strict;
{
our %options;
package A;
$options{a} = 123;
}
package main;
use strict;
our %options;
print $options{a}, "\n";
__END__
123
ale bez our, protoze requiruje prilis novy perl. Ani $$options{a} se mi
nelibi. A taky bych to chtel proste vedet - Exporter tohle prece nejak
vykouzli, ale nechapu jak.
P.
Daląí informace o konferenci Perl