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