Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Ola monges, Tenho uma pequena dúvida. Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo-new(); $p-funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p; $p-funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso: my $p = Modulo::Modulo-new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
#!/usr/bin/perl use strict;use warnings;use Math::Prime::Util ':all'; print ok if (is_prime($ARGV[0])); From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:36:23 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Ola monges, Tenho uma pequena dúvida.Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo-new();$p-funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p;$p-funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso:my $p = Modulo::Modulo-new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
isto é uma subrotina exportada onde vc viu my $p; $p-algumacoisa; ? 2014-04-29 17:40 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: #!/usr/bin/perl use strict; use warnings; use Math::Prime::Util ':all'; print ok if (is_prime($ARGV[0])); -- From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:36:23 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Ola monges, Tenho uma pequena dúvida. Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo-new(); $p-funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p; $p-funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso: my $p = Modulo::Modulo-new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Errei nesse exemplo, seria my $p = algumacoisa(); Mas ok, o Junior falou do 'Exporter', então o que eu to tentando fazer é:package Palindrome;use strict;use Exporter 'import';@EXPORT_OK = qw(is_palindrome);sub is_palindrome {return 1 if ($_[0] == reverse $_[0]);}1; mas quando tento use Palindrome 'all';print ok if (is_palindrome($ARGV[0])); e executo na shell 'perl exemplo.pl 111' ou qualquer outro número palíndromo ou não, não imprime ok, apesar de não gerar nenhuma mensagem de erro. From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:43:22 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor isto é uma subrotina exportada onde vc viu my $p; $p-algumacoisa; ? 2014-04-29 17:40 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: #!/usr/bin/perl use strict;use warnings;use Math::Prime::Util ':all'; print ok if (is_prime($ARGV[0])); From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:36:23 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Ola monges, Tenho uma pequena dúvida.Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo-new();$p-funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p;$p-funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso:my $p = Modulo::Modulo-new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
ok tem uma biblioteca chamada 'autobox' que pode fazer umas bruxarias. achei que poderia ser o caso 2014-04-29 17:57 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Errei nesse exemplo, seria my $p = algumacoisa(); Mas ok, o Junior falou do 'Exporter', então o que eu to tentando fazer é: package Palindrome; use strict; use Exporter 'import'; @EXPORT_OK = qw(is_palindrome); sub is_palindrome { return 1 if ($_[0] == reverse $_[0]); } 1; mas quando tento use Palindrome 'all'; print ok if (is_palindrome($ARGV[0])); e executo na shell 'perl exemplo.pl 111' ou qualquer outro número palíndromo ou não, não imprime ok, apesar de não gerar nenhuma mensagem de erro. -- From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:43:22 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor isto é uma subrotina exportada onde vc viu my $p; $p-algumacoisa; ? 2014-04-29 17:40 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: #!/usr/bin/perl use strict; use warnings; use Math::Prime::Util ':all'; print ok if (is_prime($ARGV[0])); -- From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:36:23 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Ola monges, Tenho uma pequena dúvida. Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo-new(); $p-funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p; $p-funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso: my $p = Modulo::Modulo-new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Opa, A expressão: Modulo::funcao( arg1, arg2 ); Significa: Invoque a função 'funcao' do módulo 'Modulo', passando como argumentos 'arg1', 'arg1' *E* especificando o namespace completo. Dentro da sub 'funcao' se você fizer algo como: sub funcao { use Data::Dumper; warn Dumper \@_ } Vai ver que só existem dois argumentos, 'arg1' e 'arg2', respectivamente. O que é ligeiramente diferente de: Modulo-funcao(arg1, arg2); Isso significa, invoque a função 'funcao' do módulo 'Modulo', passando 'arg1' e 'arg2', *MAS*, passe *implicitamente* o nome da classe (no caso 'Modulo') como primeiro argumento. Assim, se você observar o resultado do Dumper, no mesmo código vai ver que agora há *TRÊS* argumentos, e não dois. É por isso que existem documentações antigas, onde a invocação do 'construtor' (que convencionamos se chamar new()) pode ser feita assim: my $obj = new Modulo; Vejam, portanto, que são equivalentes sintaticamente: my $obj = new Modulo; my $obj = Modulo-new; Exemplo do caso do Aureliano: https://metacpan.org/pod/File::Spec Exemplo de documentação com a forma menos idiomática: https://metacpan.org/pod/String::Trigram []'s 2014-04-29 17:43 GMT-03:00 Tiago Peczenyj tiago.pecze...@gmail.com: isto é uma subrotina exportada onde vc viu my $p; $p-algumacoisa; ? 2014-04-29 17:40 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: #!/usr/bin/perl use strict; use warnings; use Math::Prime::Util ':all'; print ok if (is_prime($ARGV[0])); -- From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:36:23 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Ola monges, Tenho uma pequena dúvida. Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo-new(); $p-funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p; $p-funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso: my $p = Modulo::Modulo-new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s 2014-04-29 18:06 GMT-03:00 Blabos de Blebe bla...@gmail.com: Opa, A expressão: Modulo::funcao( arg1, arg2 ); Significa: Invoque a função 'funcao' do módulo 'Modulo', passando como argumentos 'arg1', 'arg1' *E* especificando o namespace completo. Dentro da sub 'funcao' se você fizer algo como: sub funcao { use Data::Dumper; warn Dumper \@_ } Vai ver que só existem dois argumentos, 'arg1' e 'arg2', respectivamente. O que é ligeiramente diferente de: Modulo-funcao(arg1, arg2); Isso significa, invoque a função 'funcao' do módulo 'Modulo', passando 'arg1' e 'arg2', *MAS*, passe *implicitamente* o nome da classe (no caso 'Modulo') como primeiro argumento. Assim, se você observar o resultado do Dumper, no mesmo código vai ver que agora há *TRÊS* argumentos, e não dois. É por isso que existem documentações antigas, onde a invocação do 'construtor' (que convencionamos se chamar new()) pode ser feita assim: my $obj = new Modulo; Vejam, portanto, que são equivalentes sintaticamente: my $obj = new Modulo; my $obj = Modulo-new; Exemplo do caso do Aureliano: https://metacpan.org/pod/File::Spec Exemplo de documentação com a forma menos idiomática: https://metacpan.org/pod/String::Trigram []'s 2014-04-29 17:43 GMT-03:00 Tiago Peczenyj tiago.pecze...@gmail.com: isto é uma subrotina exportada onde vc viu my $p; $p-algumacoisa; ? 2014-04-29 17:40 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: #!/usr/bin/perl use strict; use warnings; use Math::Prime::Util ':all'; print ok if (is_prime($ARGV[0])); -- From: tiago.pecze...@gmail.com Date: Tue, 29 Apr 2014 17:36:23 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor de exemplos. 2014-04-29 17:34 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Ola monges, Tenho uma pequena dúvida. Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria das vezes o seguinte: use Modulo::Modulo; my $p = Modulo::Modulo-new(); $p-funcao(); isso porque no modulo tem um contrutor ou foi gerado de presente ao autor quando usado o Moose ou semelhante. A questão é que alguns poucos módulos permitem que seja feito diretamente use Modulo::Modulo; my $p; $p-funcao(); A dúvida é: como o autor do módulo faz para que permita fazer a chamada das funções sem precisar disso: my $p = Modulo::Modulo-new(); ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.com escreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: package Modulo::Modulo; use vars qw(@ISA @EXPORT); @ISA= (qw(Exporter)); @EXPORT = qw(acp); sub acp { ... } 1; Deste modo, Aureliano, bastará dar um use em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Opa, Junior, a forma que você sugeriu é um dialeto mais antigo. Hoje em dia (e desde a época do Perl Best Practices, pg 407), o recomendado é herdar do módulo Exporter, e utilizar o @EXPORT_OK ao invés do @EXPORT diretamente. Eu vou ficar devendo todas as referências mas vou deixar a do MPB: http://modernperlbooks.com/books/modern_perl_2014/09-managing-perl-programs.html O mais atual seria algo como: package Foo; use base 'Exporter'; ## Ou use parent, dependendo da versão do Perl our @EXPORT_OK = qw{ func1 func2 }; sub func1 {} ... 1; []'s 2014-04-29 18:15 GMT-03:00 Junior Moraes juniiior...@gmail.com: Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.com escreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
não é 'dispensa declarar o construtor'. não tem nada haver uma coisa com a outra. Modulo::função, vc esta acessando uma função no 'namespace' ou 'package' Modulo Modulo-funcao vc esta acessando usando um syntax sugar pra emular um 'metodo estático', passando o nome do modulo, por exemplo. $objeto-função vc esta invocando um metodo em uma referencia abençoada ( e a função pode nem existir ). vc pode ter um Modulo::funcao que atue como um construtor! 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.com escreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.com escreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRON http://www.renatocron.com/blog/ @renato_cron http://twitter.com/#!/renato_cron ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
café deve ser 'duro' TimToady!!! 2014-04-29 19:12 GMT-03:00 Renato Santos renato.c...@gmail.com: Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRON http://www.renatocron.com/blog/ @renato_cron http://twitter.com/#!/renato_cron ___ Rio-pm mailing list
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Mas ok, não é uma boa prática... 2014-04-29 19:15 GMT-03:00 Blabos de Blebe bla...@gmail.com: café deve ser 'duro' TimToady!!! 2014-04-29 19:12 GMT-03:00 Renato Santos renato.c...@gmail.com: Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Saravá, Renato CRON http://www.renatocron.com/blog/ @renato_cron
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
ter Perl como primeira linguagem Esse foi meu feliz erro. Sofro com alguns problemas de boas praticas mas em questão de logica pura eu m dou bem. Eu diria que quem quer aprender logica deveria aprender Perl. Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar aprender boas praticas. Blabos de Blebe bla...@gmail.com escreveu: Mas ok, não é uma boa prática... 2014-04-29 19:15 GMT-03:00 Blabos de Blebe bla...@gmail.com: café deve ser 'duro' TimToady!!! 2014-04-29 19:12 GMT-03:00 Renato Santos renato.c...@gmail.com: Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA= (qw(Exporter));@EXPORT = qw(acp); sub acp {* *...* *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Hi. Em 29 de abril de 2014 18:35, Blabos de Blebe bla...@gmail.com escreveu: Junior, a forma que você sugeriu é um dialeto mais antigo. Hoje em dia (e desde a época do Perl Best Practices, pg 407), o recomendado é herdar do módulo Exporter, e utilizar o @EXPORT_OK ao invés do @EXPORT diretamente. Yep, eu estava ciente! Por isso me referi ao *use vars* como a maneira mais 'roots'. Era a única que eu sabia que não daria problema de compatibilidade com nenhuma versão do Perl. :P []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
** FLAME WARR*** C++ e Delphi ? linus torvalds discorda disso! http://article.gmane.org/gmane.comp.version-control.git/57918 2014-04-29 20:02 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: ter Perl como primeira linguagem Esse foi meu feliz erro. Sofro com alguns problemas de boas praticas mas em questão de logica pura eu m dou bem. Eu diria que quem quer aprender logica deveria aprender Perl. Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar aprender boas praticas. Blabos de Blebe bla...@gmail.com escreveu: Mas ok, não é uma boa prática... 2014-04-29 19:15 GMT-03:00 Blabos de Blebe bla...@gmail.com: café deve ser 'duro' TimToady!!! 2014-04-29 19:12 GMT-03:00 Renato Santos renato.c...@gmail.com: Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.com escreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package Modulo::Modulo; use vars qw(@ISA @EXPORT); @ISA= (qw(Exporter)); @EXPORT = qw(acp); sub acp {* *... * *}* 1; Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util. []'s
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Eu sei. Mas fui fazer um programa pra minha empresa em perl, ai minha esposa diz quero interface e pra windows, ai eu usei TK, ai ela disse quero algo bunitinho, ai aprendi delphi, ai começo da bug pra tudo que e lado, ai usei VB.net, ai fico pior, ai disse:vamos comprar um pronto. E viveram infelizes para sempre. Renato Santos renato.c...@gmail.com escreveu: ** FLAME WARR*** C++ e Delphi ? linus torvalds discorda disso! http://article.gmane.org/gmane.comp.version-control.git/57918 2014-04-29 20:02 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: ter Perl como primeira linguagem Esse foi meu feliz erro. Sofro com alguns problemas de boas praticas mas em questão de logica pura eu m dou bem. Eu diria que quem quer aprender logica deveria aprender Perl. Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar aprender boas praticas. Blabos de Blebe bla...@gmail.com escreveu: Mas ok, não é uma boa prática... 2014-04-29 19:15 GMT-03:00 Blabos de Blebe bla...@gmail.com: café deve ser 'duro' TimToady!!! 2014-04-29 19:12 GMT-03:00 Renato Santos renato.c...@gmail.com: Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.com escreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Boas praticas com Delphi é ruim heim hahaha *Daniel Vinciguerra (@dvinciguerra)* Web solution architect, perl dev, vegetarian, geek and founder at *Bivee* bivee.com.br - github.com/Bivee 2014-04-29 20:11 GMT-03:00 Renato Santos renato.c...@gmail.com: ** FLAME WARR*** C++ e Delphi ? linus torvalds discorda disso! http://article.gmane.org/gmane.comp.version-control.git/57918 2014-04-29 20:02 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: ter Perl como primeira linguagem Esse foi meu feliz erro. Sofro com alguns problemas de boas praticas mas em questão de logica pura eu m dou bem. Eu diria que quem quer aprender logica deveria aprender Perl. Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar aprender boas praticas. Blabos de Blebe bla...@gmail.com escreveu: Mas ok, não é uma boa prática... 2014-04-29 19:15 GMT-03:00 Blabos de Blebe bla...@gmail.com: café deve ser 'duro' TimToady!!! 2014-04-29 19:12 GMT-03:00 Renato Santos renato.c...@gmail.com: Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só mais uma coisa, Isso não tem nada a ver com Exporter. []'s Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la possível ser chamada à partir de outro script bastando dar um use no módulo, e não como invocar um método estaticamente como eu pensei. Creio que o jeito mais roots seria: *package
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Ainda sim mataria o dragão com perl. http://www.programacaoprogressiva.net/2012/12/Como-programadores-matariam-um-dragao-e-salvariam-a-princesa.html?m=1 Renato Santos renato.c...@gmail.com escreveu: http://i.imgur.com/8iUZEZt.png só pela zuera! 2014-04-29 20:25 GMT-03:00 Daniel Vinciguerra dan.vincigue...@gmail.com: Boas praticas com Delphi é ruim heim hahaha *Daniel Vinciguerra (@dvinciguerra)* Web solution architect, perl dev, vegetarian, geek and founder at *Bivee* bivee.com.br - github.com/Bivee 2014-04-29 20:11 GMT-03:00 Renato Santos renato.c...@gmail.com: ** FLAME WARR*** C++ e Delphi ? linus torvalds discorda disso! http://article.gmane.org/gmane.comp.version-control.git/57918 2014-04-29 20:02 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: ter Perl como primeira linguagem Esse foi meu feliz erro. Sofro com alguns problemas de boas praticas mas em questão de logica pura eu m dou bem. Eu diria que quem quer aprender logica deveria aprender Perl. Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar aprender boas praticas. Blabos de Blebe bla...@gmail.com escreveu: Mas ok, não é uma boa prática... 2014-04-29 19:15 GMT-03:00 Blabos de Blebe bla...@gmail.com: café deve ser 'duro' TimToady!!! 2014-04-29 19:12 GMT-03:00 Renato Santos renato.c...@gmail.com: Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só
Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
Ainda sim mataria o dragão com perl. http://www.programacaoprogressiva.net/2012/12/Como-programadores-matariam-um-dragao-e-salvariam-a-princesa.html?m=1 Renato Santos renato.c...@gmail.com escreveu: http://i.imgur.com/8iUZEZt.png só pela zuera! 2014-04-29 20:25 GMT-03:00 Daniel Vinciguerra dan.vincigue...@gmail.com: Boas praticas com Delphi é ruim heim hahaha *Daniel Vinciguerra (@dvinciguerra)* Web solution architect, perl dev, vegetarian, geek and founder at *Bivee* bivee.com.br - github.com/Bivee 2014-04-29 20:11 GMT-03:00 Renato Santos renato.c...@gmail.com: ** FLAME WARR*** C++ e Delphi ? linus torvalds discorda disso! http://article.gmane.org/gmane.comp.version-control.git/57918 2014-04-29 20:02 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: ter Perl como primeira linguagem Esse foi meu feliz erro. Sofro com alguns problemas de boas praticas mas em questão de logica pura eu m dou bem. Eu diria que quem quer aprender logica deveria aprender Perl. Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar aprender boas praticas. Blabos de Blebe bla...@gmail.com escreveu: Mas ok, não é uma boa prática... 2014-04-29 19:15 GMT-03:00 Blabos de Blebe bla...@gmail.com: café deve ser 'duro' TimToady!!! 2014-04-29 19:12 GMT-03:00 Renato Santos renato.c...@gmail.com: Cara, café não se pode ferver! seu café deve ser 'duro' 2014-04-29 19:01 GMT-03:00 Blabos de Blebe bla...@gmail.com: Enquanto meu café ferve, aqui vale uma reflexão: Boas práticas é um conceito flutuante. Perl é uma linguagem extremamente rica e se desenvolvimento bastante dinâmico. O que era boa prática quando eu aprendi, já não é boa prática hoje. As coisas mudam. http://perldoc.perl.org/perlhist.html Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi lançada em janeiro. Se você bobear, você que fica pré-histórico. []'s 2014-04-29 18:52 GMT-03:00 Blabos de Blebe bla...@gmail.com: Pacman, copião :) 2014-04-29 18:50 GMT-03:00 Blabos de Blebe bla...@gmail.com: que Modulo::funcao dispensa declarar o construtor. Não dispensa. Não tem nada a ver. Não misture as coisas. Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos. Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. Em Python é outro padrão. Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless(). http://perldoc.perl.org/functions/bless.html Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN. Não tem nada a ver com objetos, ou construtores. *** No seu caso, como bem observado pelo Junior, o que você quer é não ter que passar o namespace completo, por isso o uso do Exporter, que nada mais faz do que tornar a sua função conhecida no namespace atual. Exporter também não tem nada a ver com objetos. A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por default. Nesse caso, ao usar o seu módulo você precisa fazer: use Modulo qw{ funcao }; Aqui, boa prática significa basicamente, vou tormar o cuidado de exportar apenas o necessário pra não correr risco de dar conflito com outra função de mesmo nome de outro módulo. Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto. *** Como em Perl as coisas são mais livres, você vai ver casos de um package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma interface OO quanto procedural. Exemplo: https://metacpan.org/pod/String::Trigram Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma interface OO *E* uma interface procedural, pra ficar ao gosto do cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI Por essas e outras, *EU*, acho meio confuso ter Perl como primeira linguagem, pois ela te dar liberdades que em não tendo todos os conceitos bem sedimentados, *pode* confundir. O importante é, em estar estudando, não parar no estágio ah consegui fazer mas sim prosseguir pelo menos até o ah, entendi como funciona. []'s 2014-04-29 18:32 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.com: Funcionou da forma que o Junior passou. Obrigado. Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor. -- From: juniiior...@gmail.com Date: Tue, 29 Apr 2014 18:15:00 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor Hi. Em 29 de abril de 2014 18:07, Blabos de Blebe bla...@gmail.comescreveu: Só