[Cascavel-pm] uso de eval com Win32::Console

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quinta Junho 30 14:05:00 PDT 2005


Olá monges,

Eu fiz um programa para rodar no console e gostaria de
tornar configurável as cores usadas no mesmo. Para
isso eu criei um arquivo de configuração aonde o
usuário poderia escolher cores como:

# BLACK
# BLUE

Isso vai acabar parando numa chave de um hash.
Posteriormente eu queria fazer algo como:

$chatconfig{char_color} =
'$FG_'.$chatconfig{char_color};

$chatconfig{bg_color} = '$BG_'.$chatconfig{bg_color};

já que $FG_BLUE é uma variável importada do módulo
Win32::Console que me devolve um número. Como eu
preciso utilizar o número para configurar a cor do
terminal:

my $console = new Win32::Console(STD_OUTPUT_HANDLE);
$console->Attr( $chatconfig{char_color} |
$chatconfig{bg_color} );

para obter o valor da variável do pacote
Win32::Console  eu utilizei o eval:

sub color_code {

    my $var = shift;
    return ( eval "$var" );

}

$chatconfig{char_color} = color_code(
$chatconfig{char_color} );

mas isso não funciona da forma que eu gostaria:

Variable "$FG_BLUE" is not imported at (eval
7)[chat.pl:424] line 2.
        eval '$FG_BLUE
;' called at chat.pl line 424
        main::color_code('$FG_BLUE') called at chat.pl
line 41
main::(chat.pl:43):     $chatconfig{bg_color} =
'$BG_'.$chatconfig{bg_color};
  DB<2> x $chatconfig{char_color}
0  undef

O interessante é que um teste rápido na linha de
comando me retorna justamente o que eu quero:

C:\>perl -MWin32::Console -e "$test = 'BLUE'; $new =
'$FG_'.$test
; $new2 = eval ( $new.'' ); print $new2"
1

Aonde estou errando?

Obrigado!

[]'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! Acesso Grátis - Internet rápida e grátis. 
Instale o discador agora! http://br.acesso.yahoo.com/


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