[Cascavel-pm] Sintaxe

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quarta Dezembro 21 10:56:38 PST 2005


--- Luis Campos de Carvalho
<monsieur_champs em yahoo.com.br> escreveu:

>   Opa! Cuidado! Muita hora nessa calma... ;-)
>   Posso escrever 
> 
>   $DynaPack::$DynaVar
> 
>   para resolver uma variável dinâmicamente nomeada
> dentro de um pacote dinâmicamente nomeado. Eu
> acredito que com /strict/ isso não funciona muito
> bem (acho que existe uma ou duas mensagens de
> erro com palavrões especialmente para este caso...).

Eu habilitei "use strict" e o seu programa realmente
parou de funcionar. :-) Eu mexi nele e cheguei no
resultado abaixo:

#!/usr/bin/perl
use warnings;
use strict;

{
    package PacoteA;
    my $variavel1 = 'Pacote A - Variavel 1';
    my $variavel2 = 'Ainda outra variavel';
}

{
    package PacoteB;
    my $variavel1 = 'Pacote B - Variavel 1';
    my $variavel2 = 'Outra variavel';
}

for my $pack ( qw( PacoteA PacoteB ) ){

    for my $var ( qw( variavel1 variavel2 ) ){
        print $pack, '::', $var, ' = "',
${"$pack::$var"}, '".', "\n";
    }
}

O resultado foi esse:

"Use of uninitialized value in concatenation (.) or
string at ./test2 line 20.
Can't use string ("variavel1") as a SCALAR ref while
"strict refs" in use at ./test2 line 20."

Eu realmente não tenho certeza se declarei os
"package"'s de forma correta. Nunca fiz isso.

Eu fiquei curioso e tentei fazer outro teste:

#!/usr/bin/perl

use warnings;
use strict;
use Fcntl qw(:DEFAULT);

my $package = 'Fcntl';
my $var = 'O_CREAT';

print "Test 1: \n";
print $package, '::', $var, "\n";
print "Test 2: \n";
print "$package::$var\n";
print "Test 3: \n";
print eval "$package::$var";

Tendo como resultado:
"Test 1:
Fcntl::O_CREAT
Test 2:
Use of uninitialized value in concatenation (.) or
string at ./test line 14.
O_CREAT
Test 3:
Use of uninitialized value in concatenation (.) or
string at ./test line 16.
512"

>   Claro, eu tenho uns poucos usos para este tipo de
> brincadeira... mas é certamente um recurso
> interessante para o meu próximo JAPH... ;-)

Acho que usar "::" não vai muito além desse uso.

[]'s


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1


	



	
		
_______________________________________________________ 
Yahoo! doce lar. Faça do Yahoo! sua homepage. 
http://br.yahoo.com/homepageset.html 



Mais detalhes sobre a lista de discussão Cascavel-pm