<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Bom, parece que to enferrujado mesmo, fazia um tempinho que não programava em Perl.<div><br></div><div>Tem um outro probleminha ocorrendo.</div><div><br></div><div>Aqui -> <a href="http://pastebin.com/XJ512YYx" target="_blank">http://pastebin.com/XJ512YYx</a> na classe, esta retornando o seguinte erro</div><div>Use of uninitialized value $_[0] in chr at Vigenere.pm line 22.</div><div><br></div><div>A linha 22 é</div><div>sub isalpha{chr ($_[0]) =~ /[a-zA-Z]/} </div><div><br></div><div>Mas, eu criei esse package a partir desse script aqui -> <a href="http://pastebin.com/svEkjFJj" target="_blank">http://pastebin.com/svEkjFJj</a></div><div><br></div><div>Que tem a mesma rotina escrita da mesma forma.</div><div><br></div><div>Por algum motivo funciona em um e em outro não.</div><div><br></div><div>Por que será??</div><div><br></div><div>É o $_[0]??<br><br><div><hr id="stopSpelling">From: bruno.buss@gmail.com<br>Date: Sun, 10 Nov 2013 23:39:42 -0200<br>To: rio-pm@pm.org<br>Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère<br><br><div dir="ltr">Oi Aureliano,<div><br></div><div>Quando você define um atributo como required no Moose, você precisa passa-lo pelo construtor do seu objeto (new()).</div><div><br></div><div>No caso, seu código ficaria assim:</div>

<div><div><br></div><div>[...]</div><div>my $a = Vigenere->new( key => 'cinco', word => 'teste' );</div><div>say "Resultado: " . $a->encode();</div></div><div><br></div><div class="ecxgmail_extra">

<br><br><div class="ecxgmail_quote">2013/11/10 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex;">




<div><div dir="ltr"><div>#!usr/env/bin perl</div><div><br></div><div>use feature 'say';</div><div>use common::sense;</div><div>use Vigenere;</div><div><br></div><div>my $a = Vigenere->new();</div><div>$a->key('cinco');</div>

<div>$a->word('teste');</div><div> </div><div><br></div><div>say "Resultado: " . $a->encode();</div><br><div><hr>From: <a href="mailto:tiago.peczenyj@gmail.com" target="_blank">tiago.peczenyj@gmail.com</a><br>

Date: Sun, 10 Nov 2013 22:42:46 -0200<div><div class="h5"><br>To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>Subject: Re: [Rio-pm]   [Fun - passa tempo] Cifra de Vigenère<br><br><div dir="ltr">mostra o codigo</div>

<div><br><br><div>2013/11/10 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br>

<blockquote style="border-left:1px #ccc solid;padding-left:1ex;">


<div><div dir="ltr">Certo, mas eu estou preenchendo os atributos, a não ser que eu esteja preenchendo de forma errada.<br><br><div><hr>From: <a href="mailto:tiago.peczenyj@gmail.com" target="_blank">tiago.peczenyj@gmail.com</a><br>



Date: Sun, 10 Nov 2013 22:22:14 -0200<div><div><br>To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>Subject: Re: [Rio-pm]        [Fun - passa tempo] Cifra de Vigenère<br><br><div dir="ltr">sim pq este erro vem do fato que este atributo é requerido<div>



<br></div><div>se vc quer dar uma mensagem mais bonitinha pro usuario, valide os imputs no seu script antes de instanciar a classe. assim vc separa as coisas :)</div>

</div><div><br><br><div>2013/11/10 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote style="border-left:1px #ccc solid;padding-left:1ex;">








<div><div dir="ltr">Bom, usei o Moose como recomendou, mais pratico.<div>Quanto ao if, realmente foi falta de atenção, deveria ser um && no lugar da virgula.</div><div><br></div><div>Mas o erro que retorna é</div>





<div>Attribute (key) is required at C:/Perl/site/lib/Moose/Meta/Attribute.pm line 519</div><div><br></div><div>Por algum motivo, é como se não fosse atribuido valor algum a key.</div><div><br></div><div>Quanto ao metodo BUILD é que como ja tinha o codigo quase pronto fiquei com preguissa de usar para validar, mas vou mudar para que word e key tenham o mesmo tamanho sempre.</div>





<div><br></div><div><br><br><div><hr>From: <a href="mailto:tiago.peczenyj@gmail.com" target="_blank">tiago.peczenyj@gmail.com</a><br>Date: Sun, 10 Nov 2013 21:00:04 -0200<br>To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><div>





<div><br>Subject: Re: [Rio-pm]      [Fun - passa tempo] Cifra de Vigenère<br><br><div dir="ltr">Aureliano<div><br></div><div>com Moose vc pode marcar um atributo como required. assim se alguem esquecer ele na hora de inicializar a classe haverá uma mensagem de erro.</div>





<div><br></div><div><div>has 'word' =>(</div>

<div>                is => 'rw',</div><div>                isa => 'Str',</div><div>                required => 1,</div></div><div>);</div><div><br></div><div>melhor do que utilizar 'default' para validação. eu uso MUITO o default mas justamente para inicializar o que eu preciso.</div>







<div><br></div><div>alias se vc precisa validar o tamanho da chave e do texto, vc poderia utilizar BUILD para isso.</div><div><br></div><div><a href="http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod" target="_blank">http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod</a><br>







</div><div><br></div><div>agora o que vc quer dizer com isso?</div><div><br></div><div><span style="color:rgb(177,177,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">if</span><span style="line-height:21px;font-size:12px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;"> </span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">(</span><span style="line-height:21px;font-size:12px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;">isalpha</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">(</span><span style="color:rgb(0,0,255);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">$word</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">[</span><span style="color:rgb(0,0,255);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">$a</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">]</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">)</span><span style="color:rgb(51,153,51);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">,</span><span style="line-height:21px;font-size:12px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;"> isalpha</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">(</span><span style="color:rgb(0,0,255);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">$key</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">[</span><span style="color:rgb(0,0,255);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">$a</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">]</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">)</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">)</span><span style="color:rgb(0,153,0);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;">{</span><span style="line-height:21px;font-size:12px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;"> </span><br>







</div><div><span style="line-height:21px;font-size:12px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;"><br>







</span></div><div>o que é um if com virgula?</div></div><div><br><br><div>2013/11/10 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br>







<blockquote style="border-left:1px #ccc solid;padding-left:1ex;">


<div><div dir="ltr">Bom, fiz as mudanças aconselhadas e mais outras,<div>ainda transformei em uma classe.</div><div><br></div><div>Vigenere.pm-> <a href="http://pastebin.com/aL4brPZx" style="font-size:12pt;" target="_blank">http://pastebin.com/aL4brPZx</a></div>







<div>Script teste -> <a href="http://pastebin.com/nbuqPqUr" target="_blank">http://pastebin.com/nbuqPqUr</a><br><br>Ou-> <a href="https://www.dropbox.com/sh/4diypsz4y2puvxq/t0HuRZLvZW/Vigenere_Perl" target="_blank">https://www.dropbox.com/sh/4diypsz4y2puvxq/t0HuRZLvZW/Vigenere_Perl</a></div>







<div><br></div><div>Por algum motivo tem alguma coisa dando errado com o Moose, ainda não identifiquei, alguém ai sabe o que poderia ser??<br><div><hr>From: <a href="mailto:nuba@fastmail.fm" target="_blank">nuba@fastmail.fm</a><br>







To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>Date: Sun, 10 Nov 2013 04:16:56 -0200<br>Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère<div><div><br><br>




<div> </div>
<div> </div>
<div> </div>
<div>On Sun, Nov 10, 2013, at 01:13 AM, Tiago Peczenyj wrote:<br></div>
<blockquote><div dir="ltr"><div>3- use map :)<br></div>
<div> </div>
<div>ao inves de <br></div>
<div> </div>
<div><div>        my @b = split (//, $c);<br></div>
<div>        for (my $i = 0; $i < @b; $i++){<br></div>
<div>                $b[$i] = ord $b[$i];<br></div>
<div>        }<br></div>
</div>
<div> </div>
<div>podes fazer<br></div>
<div> </div>
<div>return map { ord } split //, $c;<br></div>
</div>
</blockquote><div> </div>
<div>quer enxugar mais uma gota? faz<br></div>
<div> </div>
<div>map ord, split //, $c;<br></div>
<div> </div>
<div>:)<br></div>
<div> </div>
<div><div>--<br></div>
<div>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></div>
<div>Discipline is not an end in itself, just a means to an end. - King Crimson<br></div>
<div> </div>
</div>


<br></div></div><div>_______________________________________________
Rio-pm mailing list
<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></div></div></div>                                           </div></div>
<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></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br>







<br><a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a>
</div>
<br>_______________________________________________
Rio-pm mailing list
<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></div></div></div></div>                                       </div></div>
<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></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br>





<br><a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a>
</div>
<br>_______________________________________________
Rio-pm mailing list
<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></div></div></div>                                           </div></div>
<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></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br>



<br><a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a>
</div>
<br>_______________________________________________
Rio-pm mailing list
<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></div></div></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><br><br clear="all"><div><br></div>-- <br>Bruno C. Buss<br><a href="http://www.brunobuss.net" target="_blank">http://www.brunobuss.net</a>
</div></div>
<br>_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm</div></div>                                        </div></body>
</html>