<div>Breno muito obrigado pela resposta, é que como já programo em PHP, achei que podia pular alguns materiais basicos, ;-), Mas to vendo que Perl tem algumas particularidades.</div>
<div> </div>
<div>Só para deixar claro, não sou programador, sou administrador de redes, uso liguagens só para criar scipts e alguns sistemas simples. Nada profissional.</div>
<div> </div>
<div>Mas vou reler essa sua mensagem com calma, e vou reler o material introdutorio.</div>
<div> </div>
<div>Quanto mais a gente estuda mais a gente tem duvidas, entao me aguardem, rsrsrs</div>
<div> </div>
<div>Abraço <br><br> </div>
<div><span class="gmail_quote">Em 09/04/09, <b class="gmail_sendername">breno</b> &lt;<a href="mailto:breno@rio.pm.org">breno@rio.pm.org</a>&gt; escreveu:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Oi Pedro, bem vindo!<br><br>Recomendo vivamente que vc siga a recomendação do Daniel e aprenda um<br>pouco mais sobre o básico da linguagem com a excelente documentação do<br>
Perl.<br><br>Sobre suas dúvidas, bom, como vc deve ter percebido pela resposta do<br>Otávio, em Perl existe sempre mais de uma maneira de se fazer as<br>coisas! A grande questão é que, enquanto uma ou outra forma são<br>simples diferenças de &quot;sotaque&quot;, outras são realmente mais<br>
recomendadas, por diversos motivos.<br><br>A primeira coisa que vc deveria se acostumar a fazer é formular<br>perguntas que nos ajudem a te ajudar. Por exemplo, vc disse:<br><br>&quot;to tentando criar um script que leia um arquivo PHP que tenho no servidor&quot;<br>
<br>, e isso levou o Otávio a crer que o arquivo era local, e não remoto.<br>Depois, vc disse:<br><br>&quot;Porem o codigo nao exibe o conteudo do arquivo PHP&quot;<br><br>, nesse ponto o melhor a fazer é dizer algo como:  &quot;estava esperando X<br>
e aconteceu Y&quot;. Dizer &quot;não funcionou&quot; não nos diz muita coisa =)<br><br>Por exemplo, se você ativa o pragma strict (&quot;use strict&quot;), então todas<br>as suas variáveis precisam ser pré-declaradas! Como? Colocando &quot;my&quot; na<br>
frente delas antes de usá-las pela primeira vez (e lá se foi uma das<br>suas dúvidas, espero! :)<br><br>Aí seguem duas dicas importantes:<br><br>1) Seus programas devem *sempre* começar com:<br>use strict;<br>use warnings;<br>
<br>exatamente como o Otávio respondeu. (alguns desenvolvedores gostam de<br>tirar o &quot;warnings&quot; qdo o sistema entra em produção, mas não faça isso<br>:-)<br><br>2) Pra vc que está começando, o Perl oferece um outro pragma muito<br>
interessante, e recomendo que use:<br>use diagnostics;<br><br>coloque esse pragma logo abaixo do &quot;use warnings&quot;, e o Perl te dará<br>dicas sobre o que ele acha que está acontecendo e como solucionar o<br>problema. Por exemplo, rodando o seu programa com esses três pragmas<br>
ativos, obtemos a saida:<br><br>-----------------------------8&lt;-----------------------------<br>Global symbol &quot;$file&quot; requires explicit package name at pedro.pl line 6.<br>Global symbol &quot;$file&quot; requires explicit package name at pedro.pl line 7.<br>
Global symbol &quot;@lines&quot; requires explicit package name pedro ex.pl line 8.<br>Global symbol &quot;@lines&quot; requires explicit package name at pedro.pl line 11.<br>Execution of pedro.pl aborted due to compilation errors (#1)<br>
   (F) You&#39;ve said &quot;use strict&quot; or &quot;use strict vars&quot;, which indicates<br>   that all variables must either be lexically scoped (using &quot;my&quot; or &quot;state&quot;),<br>   declared beforehand using &quot;our&quot;, or explicitly qualified to say<br>
   which package the global variable is in (using &quot;::&quot;).<br><br>Uncaught exception from user code:<br>       Global symbol &quot;$file&quot; requires explicit package name at pedro.pl line 6.<br>Global symbol &quot;$file&quot; requires explicit package name at pedro.pl line 7.<br>
Global symbol &quot;@lines&quot; requires explicit package name at pedro.pl line 8.<br>Global symbol &quot;@lines&quot; requires explicit package name at pedro.pl line 11.<br>Execution of pedro.pl aborted due to compilation errors.<br>
at ex.pl line 11<br>-----------------------------&gt;8-----------------------------<br><br>Viu a dica ali no meio? Pois é :-)<br><br><br>Outra coisa que você reparou foi que o Otávio usou o comando &quot;open&quot;<br>com 3 argumentos, em vez de dois. Essa é a forma recomendada de usar o<br>
open, pois nela vc diz explicitamente qual o modo de abertura<br>(leitura, escrita, etc), e evita código potencialmente inseguro. Isso<br>porque, usando o open com dois argumentos apenas, você não consegue<br>forçar o modo desejado. Afinal, o open aceita nessa forma que você<br>
especifique o modo DENTRO da variável, como $file =<br>&#39;&gt;meu_arquivo.txt&#39;. Se alguém conseguir editar o conteúdo da variável,<br>pode causar muitos problemas!<br><br>Mas ele fez mais do que isso... se vc reparar, ele usou como handle de<br>
arquivo uma variável, e não uma palavra em maiúsculas (bareword). Esse<br>é o procedimento recomendado também, especialmente pq barewords são<br>globais do pacote (em vez de léxicas, como as variáveis declaradas com<br>&quot;my&quot;) e podem causar muitos problemas inesperados (especialmente se vc<br>
acidentalmente usar a mesma bareword para abrir diferentes arquivos).<br><br>Para mais informações:  perldoc -f open<br><br>Outra coisa que ele fez foi usar operadores &quot;quote-like&quot; em vez dos<br>quotes em si. Em Perl, você pode especificar um bloco entre aspas<br>
simples como q{}, entre aspas duplas como qq{}. Isso é particularmente<br>útil para evitar precisar escapar caracteres especiais. Por exemplo,<br>suponha que vc queira armazenar em $var o conteúdo:<br><br>    %_@&#39;&#39;&#39;0283&#39;,z&#39;&#39;&#39;&#39;&#39;&#39;..&#39;.&#39;<br>
<br>Você teria que fazer algo como:<br><br>my $var = &#39;%_@\&#39;\&#39;\&#39;0283\&#39;,z\&#39;\&#39;\&#39;\&#39;\&#39;\&#39;..\&#39;.\&#39;&#39;;<br><br>o que é no mínimo confuso. Que tal assim:<br><br>my $var = q{%_@&#39;&#39;&#39;0283&#39;,z&#39;&#39;&#39;&#39;&#39;&#39;..&#39;.&#39;};<br>
<br>Bem mais fácil, né? O perl faz o que vc quer e não deixa os &quot;pliques&quot;<br>internos interferirem no seu comando :-)<br><br>Usar q{} e qq{} é especialmente útil ao fazer one-liners, evitando que<br>os quotes sejam interpolados pela shell. Dentro do código, a menos que<br>
você tenha um bom motivo como o acima, é só uma questão de preferência<br>mesmo - então fazer &#39;&gt;&#39; ou q{&gt;} não importa. Existe um outro operador,<br>o qw(), que separa elementos de listas, de modo que em vez de vc<br>
escrever assim:<br><br>  my @herculoids = ( &#39;igoo&#39;, &#39;tundro&#39;, &#39;zok&#39;, &#39;gloop&#39;, &#39;gleep&#39; );<br><br>pode escrever assim:<br><br>  my @herculoids = qw( igoo tundro zok gloop gleep );<br>
<br>que costuma ser muito mais fácil de escrever, e de ler.<br><br>Outra coisa que ele fez diferente foi ler o arquivo uma linha por vez,<br>que é mais eficiente do que ler tudo de uma vez pra dentro de um<br>array, e é o procedimento recomendado - especialmente para arquivos<br>
grandes. Ele usou a variável de contexto $_, mas vamos deixar isso pra<br>depois que você tiver se acostumado com o Perl :-)<br><br>Finalmente, como nota pessoal, em Perl a maioria dos parêntesis são<br>opcionais e devem ser usados apenas para evitar ambiguidade. Assim, em<br>
vez de fazer:<br><br>  open (my $FH, &#39;&lt;&#39;, $filename) or die $!;<br>  ...<br>  print ($linha);<br>  ...<br>  close($FH);<br><br>você pode fazer:<br><br>  open my $FH, &#39;&lt;&#39;, $filename or die $!;<br>  ...<br>
  print $linha;<br>  ...<br>  close $FH;<br><br>No caso do open, muita gente (inclusive eu) gosta de colocar o &quot;or&quot; na<br>linha de baixo, com uma leve identação. Assim:<br><br>  open my $FH, &#39;&lt;&#39;, $filename<br>
      or die &quot;erro abrindo arquivo: $!\n&quot;;<br><br>Ou você pode usar o pragma &quot;autodie&quot;, mas isso também é outra história :-)<br><br><br>Enfim, já me alonguei muito. A moral da história é:<br><br>Experimente as coisas do jeito que o Otávio disse  (otavio++)<br>
<br>Leia a documentação indicada pelo Daniel  (mantovani++)<br><br><br>E qq coisa, é só perguntar!<br><br>[]s<br><br>-b<br><br>2009/4/8 Pedro César &lt;<a href="mailto:pedrocesar@tecdom.com.br">pedrocesar@tecdom.com.br</a>&gt;:<br>
&gt; Puxa, e eu tava achando massa meu código, rsrsrs, é um de meus primeiros.<br>&gt;<br>&gt; Vê só, já que você me deu a &quot;brecha&quot; vou pedir duas coisas, a primeira é<br>&gt; comentar o código que você me fez, basicamente não entendi por exemplo o<br>
&gt; &quot;my&quot; na frente do $file e o q{&lt;} no open.<br>&gt;<br>&gt; A segunda é que gostaria que me mostrasse como usar o modulo sugerido, pois<br>&gt; o acesso é remoto mesmo, se puder fazer o código e comentar, me ajuda muito.<br>
&gt;<br>&gt; Muitíssimo obrigado desde ja.<br>&gt;<br>&gt; 2009/4/8 Otávio Fernandes &lt;<a href="mailto:otaviof@gmail.com">otaviof@gmail.com</a>&gt;<br>&gt;&gt;<br>&gt;&gt; Olá Pedro,<br>&gt;&gt;<br>&gt;&gt; Estou vendo, realmente, que você está começando com Perl. Bom,<br>
&gt;&gt; primeira coisa, você está passando uma URI para acessar o arquivo...<br>&gt;&gt; acredito que você está rodando o script no mesmo servidor onde este<br>&gt;&gt; arquivo se encontra, então, você tem que passar path para acessar<br>
&gt;&gt; diretamente, exemplo: &quot;my $file = q{/var/tmp/arquivo.php};&quot;. O script<br>&gt;&gt; ficaria assim (com algumas melhorias):<br>&gt;&gt;<br>&gt;&gt; #!/usr/bin/env perl<br>&gt;&gt;<br>&gt;&gt; use strict;<br>
&gt;&gt; use warnings;<br>&gt;&gt;<br>&gt;&gt; my $file = q{/var/tmp/arquivo.php};<br>&gt;&gt;<br>&gt;&gt; open( my $FH, q{&lt;}, $file ) or die $!;<br>&gt;&gt; while( &lt;$FH&gt; ) {<br>&gt;&gt;    print;<br>&gt;&gt; }<br>
&gt;&gt; close( $FH );<br>&gt;&gt;<br>&gt;&gt; __END__<br>&gt;&gt;<br>&gt;&gt; Caso você queria acessar este arquivo remoto, via protocolo HTTP, você<br>&gt;&gt; pode usar o módulo LWP (por exemplo).<br>&gt;&gt;<br>&gt;&gt; Dúvidas? Pergunta ai.<br>
&gt;&gt;<br>&gt;&gt; um abraço,<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Otávio Fernandes &lt;otaviof at <a href="http://gmail.com">gmail.com</a>&gt;<br>&gt;&gt; <a href="http://otaviof.blogspot.com/">http://otaviof.blogspot.com/</a><br>
&gt;&gt; _______________________________________________<br>&gt;&gt; Cascavel-pm mailing list<br>&gt;&gt; <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
&gt;<br>&gt;<br>&gt;<br>&gt; --<br>&gt; Pedro César<br>&gt; Analista de Suporte<br>&gt; Microsoft Certified Professional - MCP<br>&gt; Blog: <a href="http://www.tecdom.com.br/blog">www.tecdom.com.br/blog</a><br>&gt; Fone: 82-9317-8802<br>
&gt; msn: <a href="mailto:pedrocesar@tecdom.com.br">pedrocesar@tecdom.com.br</a><br>&gt; Registered Linux User #282860<br>&gt;<br>&gt;<br>&gt; &quot;Autoridades são alguns,<br>&gt; e só por algun tempo.<br>&gt; Enquanto cidadãos somos todos nós,<br>
&gt; e durante toda a vida&quot;.<br>&gt; Prof. Hugo de Britto Machado<br>&gt;<br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; Cascavel-pm mailing list<br>&gt; <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>&gt;<br>_______________________________________________<br>Cascavel-pm mailing list<br><a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>Pedro César<br>Analista de Suporte<br>Microsoft Certified Professional - MCP<br>
Blog: <a href="http://www.tecdom.com.br/blog">www.tecdom.com.br/blog</a><br>Fone: 82-9317-8802<br>msn: <a href="mailto:pedrocesar@tecdom.com.br">pedrocesar@tecdom.com.br</a> <br>Registered Linux User #282860<br><br><br>&quot;Autoridades são alguns, <br>
e só por algun tempo.<br>Enquanto cidadãos somos todos nós,<br>e durante toda a vida&quot;.<br>Prof. Hugo de Britto Machado<br><br>