[SP-pm] Print

Luis Motta Campos luismottacampos em yahoo.co.uk
Sábado Fevereiro 23 09:22:39 PST 2008


Pate de Salvia wrote:
> Não estou entendendo:

Boa tarde para você também ;) "Zuzu" legal com a senhorita?

> Estou tentando aprender perl. Descobri que para usar tem que usar o
> -e. Para que serve o print?

Não necessáriamente. Você usa "-e" quando quer "-e"xecutar alguma coisa 
direto da linha de comando. Existem muitas outras formas de usar o Perl.

> Estou tentando somar com ele mas não funciona.

Não funciona, ou não faz o que você quer, e você não consegue explicar 
por quê ? :)

> digito perl -e "print (1+2)+4" enter e retorna 3 que burrice!

Opa! Eu adoro quando vem código junto com a pergunta. Vamos ver o que 
este faz:

O Perl está vendo este conjunto de instruções:

A. Calcule 1+2;
B. Imprima o resultado da expressão calculada em "A";
C. Some três ao resultado vindo da função "print" executada em "B";
D. Termine o programa.

O seu problema é que você não se lembrou de que o Perl acha que os 
parêntesis delimitam o que a função (no seu caso, "print") deve usar 
como argumentos.

Na verdade, o seu código faz exatamente aquilo que você pediu: ele 
imprime o resultado de "1+2" e depois adiciona "3" no código numérico 
retornado pela função "print".

> então li no fuck man e diz pra usar o -w. pra que serve?

Você é uma menina muito mal-educada. :) Comporte-se, e, quando eu for ao 
Brazil, eu te pago um drink (pode ser não alcóolico, eu não ligo) no 
próximo encontro social que tiver.

Sobre o "-w", quer dizer "me avise quando eu estiver escrevendo coisas 
ambíguas" (como no código que você escreveu). Infelizmente, os avisos 
que o Perl dá não são sempre claros. Por exemplo

     champs em rugzak:~$ perl -le 'print (1+2)+3'
     2

É o resultado do seu código, sem avisos (me pergunte para que serve o 
"-l", se você quiser saber).

Agora, se você ligar os avisos, e executar outra vez:

     champs em rugzak:~$ perl -lwe 'print (1+2)+3'
     print (...) interpreted as function at -e line 1.
     Useless use of addition (+) in void context at -e line 1.
     3

O Perl te avisa que alguma coisa vai mal. O texto, como você pode ver, 
não ajuda muito os novatos. Mas depois de umas duas cabeçadas você 
descobre que na documentação do Perl tem explicações (em inglês) sobre 
os erros e avisos que o Perl emite e o que eles querem dizer.

Como eu acredito que você esteja usando Perl num shell do linux, posso 
dizer a você como encontrar manuais específicos para a sua versão.

Para encontrar informação detalhada sobre erros, e explicações sobre as 
mensagens de aviso ou erro que o Perl devolve, digite:

perldoc perldiag

Para encontrar informação sobre warnings, digite:

perldoc warnings

E, para informação detalhada sobre os warnings, digite:

perldoc perllexwarn

> perl -we "print (1+2)+4
> 
> Ainda assim não funciona, só aparece um sinal > e trava tudo. porque?

Neste caso, o problema não é com o Perl, mas com o Shell do seu sistema 
operacional. Você não fechou as aspas, e o sistema operacional espera 
que você digite mais alguma coisa (e feche as aspas, eventualmente) 
antes de executar o comando todo.

Ainda assim, as mesmas regras se aplicam: o Perl vai interpretar isso 
como "print( 1+2 )" e "some +4 no resultado do print()". Não deve ser 
isso que você quer. ;)

>  Obrigada gente.

Por nada. É sempre um prazer ajudar novatos que postam código e 
perguntam. E você facilitaria ainda mais a minha vida se ficasse 
inscrita na lista, para eu não precisar postar esta na sua caixa postal 
pessoal. :)

Fora isso, eu tenho certeza de que você pode se beneficiar de conversar 
mais com o pessoal da lista de discussão (e pode sempre jogar fora os 
emails que não quiser ler, basta configurar seu cliente de emails para 
fazer isso para você ;)

Espero ter notícias suas outra vez. E espero que você se divirta com 
Perl. ;) Eu me divirto sempre, e é mais legal aprender assim.

Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}


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