Olá,<div><br></div><div>Veja se o exemplo lhe serve:<br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br>

</font></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">use strict;</font></div></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">use warnings;</font></div>

</div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">my $nomes = {};</font></div></div>

<div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">open(my $fh, &#39;&lt;&#39;, $ARGV[0]);</font></div>

</div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">while (my $linha = &lt;$fh&gt;){</font></div>

</div><div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        </font></span></div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"># pega letra seguida de qualquer coisa, até o final. Note que se sempre for separado por virgula, vc pode dar split</font></div>

<div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        </font></span></div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">my ($nome, $notas) = $linha =~ /(\w[^,]*)\,(.+)/;</font></div>

<div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div></div><div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        </font></span></div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace"># note que talvez seja necessario tratamentos no nome, como UpperCase, trim, acentos, etc..</font></div><div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        </font></span></div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace">$nome = uc $nome;</font></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div></div><div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        </font></span></div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace">$nomes-&gt;{$nome} = $nomes-&gt;{$nome} ? &quot;$nomes-&gt;{$nome},$notas&quot; : $notas;</font></div><div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        </font></span></div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace"># vc tambem poderia usar um push, e antes separar o valor de &quot;notas&quot; por virgula tambem</font></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">}</font></div>

</div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">print $_ . &#39; =&gt; &#39; . $nomes-&gt;{$_} . &quot;\n&quot; foreach (sort keys %$n</font>omes);</div>

</div></blockquote><div><div><br></div><div>Dentro do código, dou sugestões, como por exemplo, usar uma array ou um split. Mas ai fica a sua escolha.</div><div><br></div><div>Veja o resultado deste perl com a entrada que você mandou:<br>

</div></div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">JOAO =&gt; 10,15,10,10,8,9</font></div>

</div></div><div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">MARIA =&gt; 7,9,6,9,4,10</font></div></div></div></blockquote><div><div><br></div><br><div class="gmail_quote">2011/2/22 Leonardo Gerheim <span dir="ltr">&lt;<a href="mailto:general_andrade@yahoo.com.br">general_andrade@yahoo.com.br</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt"><div>    Agradeço à todos pelas respostas. Mas realmente não consegui me expressar, como coloquei um exemplo não específico ficou realmente complicado o entendimento. A minha intenção é a seguinte:<br>

    Eu quero poder movimentar dentro do arquivo, ou seja, avançar e recuar uma uma linha do arquivo.<br><br>ex de INPUT:<br><br>joao,10,15<br>joao,10,10 <br>joao,8,9<br>maria,7,9<br>maria,6,9<br>maria,4,10<br><br>onde temos respectivamente o nome do aluno a nota A e a nota B, mas queremos gerar um OUTPUT:<br>

<br>joao 10,10,8<br>       15,10,9<br>maria 7,6,4 <br>         9,9,10<br><br><br>Ou seja, uma nota após a outra.<br><br>    Para isso, pensei em ler a primeira linha, imprimir as
 notas notas uma embaixo da outra, logoa após isso teria que retornar à primneira linha para imprimir o segundo conjunto de notas, enquanto o nome do aluno for o mesmo. O que não consegui fazer é essa parte de movimentar dentro do arquivo, avançando e recuando em arquivos que tenham registros de tamanho diferente.<br>

    Caso existe um algoritmo mais simples por for me ajudem a montá-lo, mas de qualquer forma me expliquei como avançar e recuar linhas.<br><br>Att.<br><br>P.S: A solução do Eden na sua última resposta resolveu a última questão, eu que me expressei totalmente mal.<br>

<br><br><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt"><br><div style="font-family:arial,helvetica,sans-serif;font-size:13px"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight:bold">De:</span></b> Eden Cardim &lt;<a href="mailto:edencardim@gmail.com" target="_blank">edencardim@gmail.com</a>&gt;<br>

<b><span style="font-weight:bold">Para:</span></b>
 Cascavel Perl Mongers &lt;<a href="mailto:cascavel-pm@pm.org" target="_blank">cascavel-pm@pm.org</a>&gt;<br><b><span style="font-weight:bold">Enviadas:</span></b> Terça-feira, 22 de Fevereiro de 2011 9:04:35<br><b><span style="font-weight:bold">Assunto:</span></b> Re: [Cascavel-pm] Acesso aleatório à arquivos<br>

</font><div><div></div><div class="h5"><br>&gt;&gt;&gt;&gt;&gt; &quot;Leonardo&quot; == Leonardo Gerheim &lt;<a href="mailto:general_andrade@yahoo.com.br" target="_blank">general_andrade@yahoo.com.br</a>&gt; writes:<br><br>

    Leonardo&gt; Olá pessoal, Preciso ler um arquivo e quando em uma<br>    Leonardo&gt; determinada linha contiver um valor, ele pular para a<br>    Leonardo&gt; próxima linha e quando encontrar um segundo valor não<br>
    Leonardo&gt; imprimir mais nada, como no exemplo abaixo:<br>
<br>Não ficou claro o que você quer aqui, mostra um exemplo da entrada e da<br>saída esperada.<br><br>    Leonardo&gt; joao- não imprimir<br> 
   Leonardo&gt; maria- não imprimir<br>    Leonardo&gt; antonio- não imprimir<br>    Leonardo&gt; a- não imprimir<br>    Leonardo&gt; linguagem- IMPRIMIR<br>    Leonardo&gt; programacao- IMPRIMIR<br>    Leonardo&gt; b- não imprimir<br>

    Leonardo&gt; elizabeth- não imprimir<br>    Leonardo&gt; kenia- não imprimir<br><br>Isso é a entrada ou a saída do programa?<br>grep não resolve?<br>,----[ cat test_data ]<br>| joao<br>| maria<br>| antonio<br>| a<br>
| linguagem<br>
| programacao<br>| b<br>| elizabeth<br>| kenia<br>`----<br>,----[ cat test_data | grep &quot;linguagem\|programacao&quot; ]<br>| linguagem<br>| programacao<br>`----<br><br>    Leonardo&gt;     Eu consegui fazer um script para isso, entretanto<br>

    Leonardo&gt; somente consegui que ele funcione, quando o amanho dos<br>    Leonardo&gt; registros são iguais. Como faço para
 resolver esse<br>    Leonardo&gt; problema tendo um arquivo com registros de tamnho<br>    Leonardo&gt; diferente?<br><br>Se você mostrar o código, com um exemplo da execução, fica mais fácil te<br>ajudar.<br><br>-- <br>

Eden Cardim<br>Software Engineer<br>+55 73 9986-3963<br><a href="http://edencardim.com" target="_blank">edencardim.com</a><br>_______________________________________________<br>Cascavel-pm mailing list<br><a href="mailto:Cascavel-pm@pm.org" target="_blank">Cascavel-pm@pm.org</a><br>

<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></div></div></div></div>
</div><br>



       </div><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" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>Renato Santos<br><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a><br>


</div>