<p>também recomendo o modern perl, se ler terá sua dúvida sanada.</p>
<p>A dica é, entenda listas em perl. </p>
<p>my ($scalar) = (1,2);</p>
<div class="gmail_quote">On Mar 31, 2012 12:51 PM, "Aureliano Guedes" <<a href="mailto:guedes_1000@hotmail.com">guedes_1000@hotmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div><div dir="ltr">
Eu sei que o split que separou tudo, mas "my ( $first, $second ) = ( $piece =~ /\d{2}/g );" é que joga automaticamente o primeiro digito para um e o segundo para outro...<br>achei isso imprecionante.<br><br>Bem join e split eu conheço bem, ja os usei a uns 4 meses atras, logo depois de ter começado a "Perlgramar" ^^.<br>
<br>mas esse map, ja li na perldoc aqui -> <a href="http://perldoc.perl.org/functions/map.html" target="_blank">http://perldoc.perl.org/functions/map.html</a> e apesar de bem explicado não entrou na minha cabeça.<br><br>
bem mas to tentando fazer o programa aqui de outra forma, ja entendi algumas coisas vendo o seu, mas o seu gera umas coisas desnecessaria no output.<br><br>Bem, vou tentando, qualquer coisa eu posto aqui esperando ajuda...<br>
<br><div><div></div>> From: <a href="mailto:tiago.peczenyj@gmail.com" target="_blank">tiago.peczenyj@gmail.com</a><br>> Date: Sat, 31 Mar 2012 10:21:23 -0300<br>> To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>
> Subject: Re: [Rio-pm] Mudando de formato<br>> <br>> Outra dica é exercitar<br>> <br>> se vc não entendeu parte do codigo abra um editor de texto, coloque o<br>> trecho e de valores as variaveis, vendo o que acontece no final<br>
> rodando o programa. enche de print num primeiro momento, depois vc<br>> refina conforme vai aprendendo.<br>> <br>> On Sat, Mar 31, 2012 at 10:13 AM, Blabos de Blebe <<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>> wrote:<br>
> >> Desculpa, floodar, mas aqui nesse trecho<br>> >> ...<br>> >> como ele pega de cada linha os valores como esse<br>> >> 0303 0303 0101 1011 0304<br>> ><br>> > Errado.<br>
> ><br>> > Quem separa a linha em 'peças' é a linha:<br>> ><br>> > my @pieces = split /\s+/, $line;<br>> ><br>> > ...que perldoc -f split, quebra a linha nos 'espaços':<br>
> ><br>> > @pieces = ( '001,', '0303', '0303', '0101', '1011', '0304' );<br>> ><br>> ><br>> >> 0303 0303 0101 1011 0304<br>> >><br>
> >> e seleciona que a cada 2 digitos primeiro é do $first e o segundo do<br>> >> $second.<br>> >><br>> >> sei que esta exatamente nessa linha<br>> >><br>> >><br>> >> my ( $first, $second ) = ( $piece =~ /\d{2}/g );<br>
> >><br>> >> a resposta, mas nunca teria pensado que isso era de certa forma automatico.<br>> ><br>> > Não existe mágica, existe perldoc perlre.<br>> ><br>> > Procure por contexto. Na verdade foi a primeira vez que eu usei isso<br>
> > na vida real.<br>> ><br>> ><br>> >> você me explicaria o que quer dizer essa linha:<br>> >><br>> >> say join( ' ', map { 0 + $_ } @first );<br>> ><br>> > perldoc -f map<br>
> > perldoc -f join<br>> ><br>> > No modern perl ele fala sobre 'casting';<br>> ><br>> > ...<br>> ><br>> > Você deve notar que eu não estou respondendo diretamente. É porque as<br>
> > respostas são bizarramente óbvias pra quem *leu a documentação*.<br>> ><br>> > Fica a dica visite as docs dos itens:<br>> ><br>> > perlio, perlre,<br>> > perldoc -f split<br>> > perldoc -f map<br>
> > perldoc -f join<br>> ><br>> ><br>> >> Eu to aqui tentando entender seu codigo, e fazer o meu proprio,<br>> ><br>> > Suas perguntas são típicas de quem está completamente perdido. Nesse<br>
> > ponto, não tente entender o código, você até pode conseguir, mas vai<br>> > levar muito mais tempo do que se parar pra aprender o básico da<br>> > linguagem.<br>> ><br>> ><br>> > Leia a documentação, leia o modern perl. Depois volte e pergunte.<br>
> ><br>> > Bônus (eu to muito bonzinho :) ):<br>> ><br>> > <a href="https://metacpan.org/module/POD2::PT_BR" target="_blank">https://metacpan.org/module/POD2::PT_BR</a><br>> ><br>> ><br>
> > []'s<br>> ><br>> ><br>> > 2012/3/31 Aureliano Guedes <<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>>:<br>> >> Desculpa, floodar, mas aqui nesse trecho<br>
> >><br>> >><br>> >>  my ( @first, @second );<br>> >>     foreach my $piece ( @pieces ) {<br>> >>         my ( $first, $second ) = ( $piece =~ /\d{2}/g );<br>> >><br>> >>         push @first, $first;<br>
> >>         push @second, $second;<br>> >>     }<br>> >><br>> >> se eu tenho esse arquivo<br>> >><br>> >><br>> >> Pop<br>> >> 001,    0303 0303 0101 1011 0304<br>
> >> 002,    0303 0003 0101 0410 0405<br>> >> 003,    0303 0305 0101 1013 0304<br>> >> 004,    0103 0304 0102 0207 0104<br>> >> Gra,    0203 0304 0202 0207 0105<br>> >><br>> >> como ele pega de cada linha os valores como esse<br>
> >><br>> >><br>> >> 0303 0303 0101 1011 0304<br>> >><br>> >> e seleciona que a cada 2 digitos primeiro é do $first e o segundo do<br>> >> $second.<br>> >><br>
> >> sei que esta exatamente nessa linha<br>> >><br>> >><br>> >> my ( $first, $second ) = ( $piece =~ /\d{2}/g );<br>> >><br>> >> a resposta, mas nunca teria pensado que isso era de certa forma automatico.<br>
> >><br>> >> ________________________________<br>> >> From: <a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a><br>> >> To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>
> >> Date: Sat, 31 Mar 2012 11:34:43 +0000<br>> >><br>> >> Subject: Re: [Rio-pm] Mudando de formato<br>> >><br>> >> Valeu mesmo, monges.<br>> >> Blabos, obrigado mesmo, mas na verdade a parte que eu pedi era so a mais<br>
> >> dificil, mas<br>> >> por que aind atem o topo dos arquivos.<br>> >><br>> >> Eu to aqui tentando entender seu codigo, e fazer o meu proprio,<br>> >> você me explicaria o que quer dizer essa linha:<br>
> >><br>> >> say join( ' ', map { 0 + $_ } @first );<br>> >><br>> >>> From: <a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a><br>> >>> Date: Fri, 30 Mar 2012 14:18:45 -0300<br>
> >>> To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>> >>> Subject: Re: [Rio-pm] Mudando de formato<br>> >>><br>> >>> Hum,<br>> >>><br>> >>> O segundo link foi colado errado. O certo seria:<br>
> >>><br>> >>> <a href="http://norvig.com/21-days.html" target="_blank">http://norvig.com/21-days.html</a><br>> >>><br>> >>> 2012/3/30 Nuba Princigalli <<a href="mailto:nuba@fastmail.fm" target="_blank">nuba@fastmail.fm</a>>:<br>
> >>> > Olá Aureliano,<br>> >>> ><br>> >>> > Você também pode levar seu problema quando fizermos o próximo hackathon<br>> >>> > +<br>> >>> > code clinic! Agora, tanto num code clinic quanto aqui na lista, a<br>
> >>> > expectativa é que você pelo menos tente quebrar o problema antes, e peça<br>> >>> > ajuda no que tiveHumr dificuldade.<br>> >>> ><br>> >>> > Esse processo de sair duma descrição em linguagem natural de um problema<br>
> >>> > e<br>> >>> > chegar numa implementação em linguagem de programação, tomando decisões<br>> >>> > de<br>> >>> > ferramentas, paradigmas, etc. no caminho, nem sempre é trivial, e<br>
> >>> > obviamente<br>> >>> > esse "trivial" depende também da sua bagagem. Se está difícil dar o<br>> >>> > passo<br>> >>> > largo de uma vez só, tente dar um passo intermediário, por exemplo,<br>
> >>> > escrevendo em pseudo-código, fazendo diagramas, ou qualquer outra<br>> >>> > técnica<br>> >>> > que te ajude a organizar o pensamento.<br>> >>> ><br>> >>> > Acho os links que o Blabos te indicou bons pontos de partida. Também<br>
> >>> > sugiro<br>> >>> > ler e dissecar pacientemente a solução que o Blabos te enviou, até você<br>> >>> > entender o que está acontecendo ali. Perldoc perlfunc são seus amigos, e<br>
> >>> > pode perguntar aqui também.<br>> >>> ><br>> >>> > Sucesso na jornada! Precisando de ajuda, estamos aqui! :)<br>> >>> ><br>> >>> > Nuba Princigalli<br>
> >>> ><br>> >>> ><br>> >>> > On Fri, Mar 30, 2012, at 12:43 PM, Blabos de Blebe wrote:<br>> >>> ><br>> >>> > Aureliano, querido amigão, o tio Blabos está de bom humor hoje e vai te<br>
> >>> > ajudar.<br>> >>> ><br>> >>> > Pelo que eu sei que você não é da área de informática, e não foi<br>> >>> > treinado<br>> >>> > para resolver o que você está tentando resolver, ponto pra você.<br>
> >>> ><br>> >>> > Mas pelo que eu sinto, você também não está fazendo o dever de casa. É<br>> >>> > comum<br>> >>> > que pessoas de outras áreas, ao se deparar com programação, saiam<br>
> >>> > desesperadamente 'caçando' tutoriais sobre 'como programar da noite pro<br>> >>> > dia'. Esquece, isso não vai acontecer.<br>> >>> ><br>> >>> > A sua dúvida não é um problema de linguagem, mas sim de como dar os<br>
> >>> > passos<br>> >>> > necessários para resolver o problema. Isso leva mais tempo pra aprender,<br>> >>> > do<br>> >>> > que descobrir os comandos necessários.<br>
> >>> ><br>> >>> > Sugiro fortemente que vc leia<br>> >>> ><br>> >>> > <a href="http://www.modernperlbooks.com/mt/index.html" target="_blank">http://www.modernperlbooks.com/mt/index.html</a><br>
> >>> ><br>> >>> > <a href="http://www.modernperlbooks.com/mt/index.html" target="_blank">http://www.modernperlbooks.com/mt/index.html</a><br>> >>> ><br>> >>> > <a href="http://www.catb.org/~esr/faqs/smart-questions.html" target="_blank">http://www.catb.org/~esr/faqs/smart-questions.html</a><br>
> >>> ><br>> >>> > ...antes de continuar com qualquer código.<br>> >>> ><br>> >>> > Nós estaremos aqui pra te apoiar e te ajudar, mas vc ainda não sabe nem<br>> >>> > quais são as perguntas. Não adianta a gente dar as respostas.<br>
> >>> ><br>> >>> ><br>> >>> > Segue abaixo um naco de código que ilustra mais ou menos como resolver<br>> >>> > esse<br>> >>> > problema (deve ter uns erros no meio), de uma forma mais ou menos<br>
> >>> > didática<br>> >>> > (foco nos passos).<br>> >>> ><br>> >>> > Provavelmente os outros monges resolvem isso em menos de 50 caracteres.<br>> >>> > Golf? :)<br>
> >>> ><br>> >>> ><br>> >>> > Não se assuste. Não desista. Mas comece a construir a sua casa pelo<br>> >>> > alicerce.<br>> >>> ><br>> >>> ><br>
> >>> > []'s<br>> >>> ><br>> >>> ><br>> >>> > <code><br>> >>> > open my $fh, '<', 'filename' or die 'cannot open file';<br>
> >>> ><br>> >>> > while ( my $line = <$fh> ) {<br>> >>> >     chomp $line;<br>> >>> >     my @pieces = split /\s+/, $line;<br>> >>> ><br>> >>> >     say '#' . ( 0 + $pieces[0] );<br>
> >>> ><br>> >>> >     my ( @first, @second );<br>> >>> >     foreach my $piece ( @pieces ) {<br>> >>> >         my ( $first, $second ) = ( $piece =~ /\d{2}/g );<br>
> >>> ><br>> >>> >         push @first, $first;<br>> >>> >         push @second, $second;<br>> >>> >     }<br>> >>> ><br>> >>> >     say join( ' ', map { 0 + $_ } @first );<br>
> >>> >     say join( ' ', map { 0 + $_ } @second );<br>> >>> > }<br>> >>> > </code><br>> >>> ><br>> >>> ><br>> >>> ><br>
> >>> > On Friday, March 30, 2012, Aureliano Guedes wrote:<br>> >>> ><br>> >>> > Bom dia,<br>> >>> > Monges.<br>> >>> ><br>> >>> > Sem enrolar muito vou ser direto na minha duvida.<br>
> >>> ><br>> >>> > Tenho dois formatos de arquivo, no qual devo converter do primeiro<br>> >>> > formato<br>> >>> > para o segundo,<br>> >>> > e no BioPerl não encontro nada que me ajude.<br>
> >>> ><br>> >>> > O primeiro formato, ou melhor, o formato de entrada segue o padrão<br>> >>> > abaixo:<br>> >>> ><br>> >>> > ################################<br>
> >>> > Pop #Aqui indica inicio dos dados<br>> >>> > 001, xywz abcd ...<br>> >>> > ... #o padrão se repete ate o final<br>> >>> > Gra, qwer jkld ... #o ultimo individuo se chama "Gra" sempre<br>
> >>> > #essas letras são numeros e no exemplo ficara mais claro<br>> >>> > ################################<br>> >>> ><br>> >>> > O segundo formato, e no caso formato de saida segue o padrão abaixo:<br>
> >>> ><br>> >>> > ###############################<br>> >>> > #1<br>> >>> > x w a c<br>> >>> > y z b d<br>> >>> > ...<br>> >>> > #x #x é o ultimo numero, que como não sabemos qual é deixei assim<br>
> >>> > q e j l<br>> >>> > w r k d<br>> >>> > ##############################<br>> >>> ><br>> >>> > Agora facilitarei tudo com um exemplo<br>> >>> ><br>
> >>> > Formato de entrada, exemplo:<br>> >>> ><br>> >>> > #############################<br>> >>> > Pop<br>> >>> > 001,    0303 0303 0101 1011 0304<br>
> >>> > 002,    0303 0003 0101 0410 0405<br>> >>> > 003,    0303 0305 0101 1013 0304<br>> >>> > 004,    0103 0304 0102 0207 0104<br>> >>> > Gra,    0203 0304 0202 0207 0105<br>
> >>> > #############################<br>> >>> ><br>> >>> > Formato de saida, exemplo:<br>> >>> ><br>> >>> > #############################<br>> >>> > #1<br>
> >>> > 3 3 1 10 3<br>> >>> > 3 3 1 11 4<br>> >>> > #2<br>> >>> > 3 0 1 4 4<br>> >>> > 3 3 1 10 5<br>> >>> > #3<br>> >>> > 3 3 1 10 3<br>
> >>> > 3 5 1 13 4<br>> >>> > #4<br>> >>> > 1 3 1 2 1<br>> >>> > 3 4 2 7 4<br>> >>> > #5<br>> >>> > 2 3 2 2 1<br>> >>> > 3 4 2 7 5<br>
> >>> > ##############################<br>> >>> ><br>> >>> > Observem duas coisas:<br>> >>> ><br>> >>> > - No primeiro formato os valores estão lado a lado, e de uma coordenada<br>
> >>> > para<br>> >>> > outra<br>> >>> > temos um espaço, as unidades sempre são 2 numeros. No segundo formato os<br>> >>> > valores estão um em baixo do outro, logo se<br>
> >>> > temo no primeiro formato<br>> >>> > #############################<br>> >>> > 001,    1213 2720<br>> >>> > #############################<br>> >>> > vai sair<br>
> >>> > #############################<br>> >>> > #1<br>> >>> > 12 27<br>> >>> > 13 20<br>> >>> > #############################<br>> >>> ><br>
> >>> > - Caso tenha um 0 na frente, o formato de saida elimina ele<br>> >>> > #############################<br>> >>> > 001,     0103 0202<br>> >>> > [/PHP]<br>> >>> > #############################<br>
> >>> > #1<br>> >>> > 1 2<br>> >>> > 3 2<br>> >>> > #############################<br>> >>> ><br>> >>> ><br>> >>> > Bem gente, toda ajuda possivel será muito bem vinda.<br>
> >>> ><br>> >>> > Desde já, grato.<br>> >>> ><br>> >>> > Att,<br>> >>> > Aureliano Guedes<br>> >>> ><br>> >>> > _______________________________________________<br>
> >>> > Rio-pm mailing list<br>> >>> > <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> >>> > <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
> >>> ><br>> >>> ><br>> >>> > --<br>> >>> > Nuba R. Princigalli <a href="mailto:nuba@pauleira.com" target="_blank">nuba@pauleira.com</a> <a href="http://pauleira.com" target="_blank">http://pauleira.com</a> @nprincigalli<br>
> >>> > Discipline is not an end in itself, just a means to an end. - King<br>> >>> > Crimson<br>> >>> ><br>> >>> > _______________________________________________<br>
> >>> > Rio-pm mailing list<br>> >>> > <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> >>> > <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
> >>> _______________________________________________<br>> >>> Rio-pm mailing list<br>> >>> <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> >>> <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
> >><br>> >> _______________________________________________ Rio-pm mailing list<br>> >> <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a> <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
> >><br>> >> _______________________________________________<br>> >> Rio-pm mailing list<br>> >> <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> >> <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
> > _______________________________________________<br>> > Rio-pm mailing list<br>> > <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> > <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
> <br>> <br>> <br>> -- <br>> Tiago B. Peczenyj<br>> Linux User #405772<br>> <br>> <a href="http://pacman.blog.br" target="_blank">http://pacman.blog.br</a><br>> _______________________________________________<br>
> Rio-pm mailing list<br>> <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</div>                                      </div></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div>