[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