vejamos anteriormente as suas funcoes recebiam 2 parametros
agora elas leem os parametros a partir dos atributos e eu acho isso... esquisito. veja só, não ha muita razão para armazenar estes dois atributos nessa classe. vc tem que pensar em termos de Objetos. vc tem um objeto que SABE fazer encode / decode. no maximo vc poderia armazenar a chave como atributo e assim reusar o objeto para encodar um texto a ser recebido. AGORA, vc tem o erro por que deve estar fazendo algo de muito creativo aqui (ai envolve explicação sobre list context e atribuição): my (@word, @key) = (tochar($self->word), tochar($self->key)); tente fazer my @key = tochar($self->key); my @word = tochar($self->word); 2013/11/11 Aureliano Guedes <[email protected]> > Bom, parece que to enferrujado mesmo, fazia um tempinho que não programava > em Perl. > > Tem um outro probleminha ocorrendo. > > Aqui -> http://pastebin.com/XJ512YYx na classe, esta retornando o > seguinte erro > Use of uninitialized value $_[0] in chr at Vigenere.pm line 22. > > A linha 22 é > sub isalpha{chr ($_[0]) =~ /[a-zA-Z]/} > > Mas, eu criei esse package a partir desse script aqui -> > http://pastebin.com/svEkjFJj > > Que tem a mesma rotina escrita da mesma forma. > > Por algum motivo funciona em um e em outro não. > > Por que será?? > > É o $_[0]?? > > ------------------------------ > From: [email protected] > Date: Sun, 10 Nov 2013 23:39:42 -0200 > > To: [email protected] > Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère > > Oi Aureliano, > > Quando você define um atributo como required no Moose, você precisa > passa-lo pelo construtor do seu objeto (new()). > > No caso, seu código ficaria assim: > > [...] > my $a = Vigenere->new( key => 'cinco', word => 'teste' ); > say "Resultado: " . $a->encode(); > > > > 2013/11/10 Aureliano Guedes <[email protected]> > > #!usr/env/bin perl > > use feature 'say'; > use common::sense; > use Vigenere; > > my $a = Vigenere->new(); > $a->key('cinco'); > $a->word('teste'); > > > say "Resultado: " . $a->encode(); > > ------------------------------ > From: [email protected] > Date: Sun, 10 Nov 2013 22:42:46 -0200 > > To: [email protected] > Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère > > mostra o codigo > > > 2013/11/10 Aureliano Guedes <[email protected]> > > Certo, mas eu estou preenchendo os atributos, a não ser que eu esteja > preenchendo de forma errada. > > ------------------------------ > From: [email protected] > Date: Sun, 10 Nov 2013 22:22:14 -0200 > > To: [email protected] > Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère > > sim pq este erro vem do fato que este atributo é requerido > > 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 :) > > > 2013/11/10 Aureliano Guedes <[email protected]> > > Bom, usei o Moose como recomendou, mais pratico. > Quanto ao if, realmente foi falta de atenção, deveria ser um && no lugar > da virgula. > > Mas o erro que retorna é > Attribute (key) is required at C:/Perl/site/lib/Moose/Meta/Attribute.pm > line 519 > > Por algum motivo, é como se não fosse atribuido valor algum a key. > > 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. > > > > ------------------------------ > From: [email protected] > Date: Sun, 10 Nov 2013 21:00:04 -0200 > To: [email protected] > > Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère > > Aureliano > > 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. > > has 'word' =>( > is => 'rw', > isa => 'Str', > required => 1, > ); > > melhor do que utilizar 'default' para validação. eu uso MUITO o default > mas justamente para inicializar o que eu preciso. > > alias se vc precisa validar o tamanho da chave e do texto, vc poderia > utilizar BUILD para isso. > > http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod > > agora o que vc quer dizer com isso? > > if (isalpha($word[$a]), isalpha($key[$a])){ > > o que é um if com virgula? > > > 2013/11/10 Aureliano Guedes <[email protected]> > > Bom, fiz as mudanças aconselhadas e mais outras, > ainda transformei em uma classe. > > Vigenere.pm-> http://pastebin.com/aL4brPZx > Script teste -> http://pastebin.com/nbuqPqUr > > Ou-> https://www.dropbox.com/sh/4diypsz4y2puvxq/t0HuRZLvZW/Vigenere_Perl > > Por algum motivo tem alguma coisa dando errado com o Moose, ainda não > identifiquei, alguém ai sabe o que poderia ser?? > ------------------------------ > From: [email protected] > To: [email protected] > Date: Sun, 10 Nov 2013 04:16:56 -0200 > Subject: Re: [Rio-pm] [Fun - passa tempo] Cifra de Vigenère > > > > > > On Sun, Nov 10, 2013, at 01:13 AM, Tiago Peczenyj wrote: > > 3- use map :) > > ao inves de > > my @b = split (//, $c); > for (my $i = 0; $i < @b; $i++){ > $b[$i] = ord $b[$i]; > } > > podes fazer > > return map { ord } split //, $c; > > > quer enxugar mais uma gota? faz > > map ord, split //, $c; > > :) > > -- > Nuba R. Princigalli [email protected] http://pauleira.com @nprincigalli > Discipline is not an end in itself, just a means to an end. - King Crimson > > > _______________________________________________ Rio-pm mailing list > [email protected] http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > Tiago B. Peczenyj > Linux User #405772 > > http://about.me/peczenyj > > _______________________________________________ Rio-pm mailing list > [email protected] http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > Tiago B. Peczenyj > Linux User #405772 > > http://about.me/peczenyj > > _______________________________________________ Rio-pm mailing list > [email protected] http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > Tiago B. Peczenyj > Linux User #405772 > > http://about.me/peczenyj > > _______________________________________________ Rio-pm mailing list > [email protected] http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > Bruno C. Buss > http://www.brunobuss.net > > _______________________________________________ Rio-pm mailing list > [email protected] http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj
_______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
