[SP-pm] perl interativo (era: printenv em perl?)

Ronaldo Ferreira de Lima jimmy.tty at gmail.com
Wed Jun 23 11:45:07 PDT 2010


Em 21/06/10, Luis Motta Campos<luismottacampos em yahoo.co.uk>  escreveu:
> Ronaldo Ferreira de Lima wrote:
>> Isso tudo para facilitar testes, brincar com módulos e testar
>> carcterísticas desconhecidas (para mim) da linguagem. Agora ficou
>> perto da descrição de uma sandbox ...
>>
>
> E, também a título de curiosidade: já que você não gosta de nenhuma das
> implementações que estão no mercado, por que é que você não começa a
> implementar uma sua? Eu posso sugerir alguma coisa, para você começar:
>
> #!/usr/bin/perl
> use strict;
> use warnings;
>
> while( my $code = <> ){
>    eval $code;
>    warn qq{Deu problema: $@.\n} if $@;
> }
> __END__
>
> Isto não tem muitas das funcionalidades que você gostaria, mas eu tenho
> certeza de que faz o básico, que é o read-eval-loop.
>
> Agora, que tal você pegar nisso e começar a quebrar a cabeça para
> implementar o que está faltando? Eu vou gostar de ver você postando
> código aqui, em breve.
>
> Boa sorte, e putamplexos.
> --
> Luis Motta Campos is a DBA,
> Perl Programmer, foodie and photographer.
> _______________________________________________

Se não me engano é no perlfaq3 onde fala algumas coisas sobre se usar
o perl interativamente, como o "perl -d" sugerido por um colega, é
muito limitado para se usar como shell e não reflete o real
comportamento do compilador real.

Seguindo sua sugestão Luis, eu fiz ontem um protótipo pré-beta:

#!/usr/bin/perl

use strict;
use warnings;
use diagnostics;

my $code;
my $prompt = q(Perl> );
$prompt = qq(\e[40;32;1m${prompt}\e[0m);
do {
    print($prompt);
    if ($code) {
		if ( substr($code, 0, 7) eq q(perldoc) ) {
			system($code);
		}
		else {
			my @result = eval($code);
			foreach my $result ( @result ) {
				print(qq($result\n));
			}
			warn(qq($@.\n)) if ($@);
		}
    }
} while ( $code = <> );
__END__

Conforme também sugerido, comecei a olhar ontem os Term::* do CORE,
talvez e vou fazer alguns testes para ver se consigo criar algo mais
usável neste sentido, uma vez que pelo comportamento do eval não
consigo habilitar ou desabilitar pragmas por exemplo.

Como você disse (e era o que você queria), eu vou realmente quebrar a cabeça.

Só me complica meus recursos limitados, e depender de lan house para
acesso a internet.


More information about the SaoPaulo-pm mailing list