From aferreira em shopzilla.com Sat May 17 13:02:18 2008 From: aferreira em shopzilla.com (Adriano Ferreira) Date: Sat, 17 May 2008 17:02:18 -0300 Subject: [Triangulo-pm] =?iso-8859-1?q?=5BPerl_-_B=E1sico=5D_=231_Hello_Wo?= =?iso-8859-1?q?rld?= Message-ID: <73ddeb6c0805171302ga6d2958wf19a989cbc364d6b@mail.gmail.com> [Perl - Básico] #1 Hello World Perl é uma linguagem concisa (até demais em certos casos). Mas o mais importante disso é que permite expressar em poucos comandos ou expressões certas tarefas que exigem muito mais codificação em outras linguagens. O exemplo clássico é o programa "Hello, World". Em Perl, ele é simplesmente #!/usr/bin/perl print "Hello, World!\n"; que não tem nada das baboseiras de um "Hello, World" em C (ou Java) com include's (import's), declarações de main(), etc. A filosofia é assim: "Hello, World!" é um programa cujo comportamento é estupidamente simples (e inútil - mas isto não vem o caso, ele é um clássico). Se assim é assim tão simples, o código deve ser simples. Portanto um único comando. Para dizer a verdade, ele é tão simples que não merece nem a edição de um arquivo para colocar um *shebang line* (aquela linha que começa com #!) e o "print". Você pode fazer direto do interpretador de comandos: $ perl -e 'print "Hello, World!\n" ' ou (para aqueles em Windows) > perl -e " print qq{Hello, World!\n} " Triangulo-pm, 2008-05-17 17:00 From a.r.ferreira em gmail.com Sat May 17 13:37:35 2008 From: a.r.ferreira em gmail.com (Adriano Ferreira) Date: Sat, 17 May 2008 17:37:35 -0300 Subject: [Triangulo-pm] Triangulo Perl Mongers In-Reply-To: References: Message-ID: <73ddeb6c0805171337m77017058n7c6d288d78b95d98@mail.gmail.com> 2008/5/12 breno : > Salve Adriano! Tudo bom? Olá, Breno. Perdão pela demora em lhe responder. Mas antes tarde do que nunca. Também respondi hoje ao censo dos grupos PM pelo Dave Cross. > Antes de mais nada, obrigado pelo apoio na lista da coordenação! Estou > com algumas idéias interessantes a respeito da Brasil.pm, espero > contar com vc > para me ajudar tb :-) Conte comigo. Para começar precisamos contatar o Flávio porque nesta página http://mag-sol.com/census2008/missing.cgi o Brasil-pm também não respondeu ao censo ainda (no qual ele ainda está registrado como líder). Isto também acontece com o PortoAlegre.pm (com o Igor que também mais longe de POA não pode estar) e o Salvador.pm (com o Joênio). > Bom, estou enviando este email a fim de completar um breve censo a > respeito dos Grupos de Usuários Perl do Brasil, mas não consegui > encontrar mais informações sobre o grupo (o site > http://triangulo.pm.org dá um erro 403, dizendo que não tenho > permissão para ver o conteúdo do servidor). Eu nunca arrumei o tempo para pôr o site funcionando. E isto nos servidores do PM.org. Confesso, fui preguiçoso. Vai que eu melhoro daqui em diante. >Se puder gastar um pouco > de seu tempo respondendo as perguntas abaixo, ficarei muito > agradecido! Com certeza. > - Seu grupo está ativo? Em caso negativo, por favor inclua uma breve > descrição do motivo. Depende do que você chama de ativo. Na minha vontade, sim. Tem uma meia dúzia de assinantes, a maioria convidado pessoalmente por mim. Mas eu realmente queria atingir mais programadores na região onde vivo. (Esta região que é o Triângulo Mineiro envolve várias cidades como Uberlândia, Uberaba, Tupaciguara, Araguari, cidades lá no bico de MG, bem longe de BH, mais perto de Goiás e SP.) O problema é que agora eu nem trabalho em uma empresa da região, embora ainda viva em Uberlândia. Mas ainda tenho esperança no fator multiplicador do boca-a-boca para fazer com que curiosos comecem aparecer na lista de discussão que é a única coisa ativa por enquanto. (Encontros sociais ou técnicos não fazem muito sentido ainda.) Vou me esforçar para contatar estudantes e programadores interessados da região. Acho muito importante reunir quem sabe da existência de Perl e fazer com que outros saibam também que a linguagem existe e pode ser muito importante/útil para fazer trabalho de várias espécies. > - Seu grupo possui lista de discussão? Caso afirmativo, qual o número > de inscritos e média de posts por semana? Sim. É uma lista também hospedada pelo pm.org. A interface de subscrição é acessível através da URL: http://mail.pm.org/mailman/listinfo/triangulo-pm e o endereço para postar mensagens é: "Triangulo-pm Perl Mongers" , Hoje temos muito poucos inscritos como disse antes, e a maioria deles foi chamada pessoalmente por mim, mas ainda não vingou como um fórum de discussão constante e movimentado. Nestes meses que eu venho desaparecido por causa do trabalho, está dormente. > - Seu grupo organiza encontros sociais? Caso afirmativo, qual a > regularidade dos encontros e número médio de participantes? Neca. ;-) > - Seu grupo organiza encontros técnicos? Caso afirmativo, qual a > regularidade dos encontros e número médio de participantes? Muito menos. A idéia é realizar tais encontros existe assim que atinjamos alguma massa crítica de pessoas interessadas: primeiro interessados em tomar cerveja juntos conversando amenidades e ocasionalmente tocando em assuntos de Perl (encontros sociais) e depois palestras que divulguem a linguagem e seus usos (encontros técnicos). > - Está ciente/já respondeu ao censo global de pm's enviado pelo Dave Cross? Acabei de responder. > - Como você vê a integração do seu grupo com demais grupos de Perl do Brasil? Que integração? :-) Brincadeira. Acho que ajuda muito que as pessoas saibam que há gente usando Perl pelo Brasil e pelo mundo todo e que, se no seu grupo local, não se pode achar a resposta pela qual procuram, podem contar com grupos maiores, mas não tenho nenhuma idéia como isto pode acontecer de forma mais natural. Hoje no Brasil, os grupos de Perl são basicamente o de São Paulo e o do Rio (que mantem encontros sociais e técnicos) e o Cascavel-PM que é a lista por excelência do Brasil todo. Todo o entorno (e são muitos os grupos PM brasileiros) parece tão dormente quanto o Triangulo-pm. O que pudermos fazer para mudar isto, devemos fazer. > Muito obrigado pelo seu tempo respondendo as questões acima. Tenho certeza que você se arrependeu de ter perguntado diante de tal longa resposta. Estou colocando em cópia o grupo de coordenadores do projeto Perl Brasil e o próprio grupo Triangulo-pm para divulgação e transparência. Se não temos transparência na política, que pelo menos tenhamos em grupos de desenvolvedores. (Não fui eu que inventei isso. Estou só seguindo a tendência inaugurada pela TPF - The Perl Foundation - que agora avalia as propostas para projetos fundeados pela TPF publicamente no wiki da fundação.) > Um grande abraço! > > breno Saudações. (Se eu fosse o Monsieur Champs, enviaria putamplexos, mas não me dou estas liberdades poéticas.) Adriano Ferreira From aferreira em shopzilla.com Sat May 17 15:56:22 2008 From: aferreira em shopzilla.com (Adriano Ferreira) Date: Sat, 17 May 2008 19:56:22 -0300 Subject: [Triangulo-pm] =?iso-8859-1?q?=5BPerl_-_Intermedi=E1rio=5D_=231_A?= =?iso-8859-1?q?cessores?= Message-ID: <73ddeb6c0805171556s1da53b1kcfb117e4a729277c@mail.gmail.com> [Perl - Intermediário] #1 Acessores Programação Orientada a Objeto em Perl é algo poderoso, embora cheio de idiossincracias (como "objetos são referências abençoadas"). A forma como classes são criadas (com "packages") e métodos são escritos (com "subs") tem uma série de vantagens e desvantagens. Uma das coisas mais comuns é criar *setters* e *getters* para os atributos de um objeto, como uma representação de "CD" que deve ter atributos como "id", "title", "artist". Para criar estes métodos, a forma tradicional é decidir pela representação de um objeto como um *hash ref* e escrever: # CD.pm package CD; sub new { my $proto = shift; my $class = ref $proto || $proto; my $obj = bless {@_}, $class; return $obj; } sub id { my $self = shift; if (@_) { $self->{id} = shift; } $self->{id}; } sub title { my $self = shift; if (@_) { $self->{title} = shift; } $self->{title}; } sub artist { my $self = shift; if (@_) { $self->{artist} = shift; } $self->{artist}; } "the truth at the end of the package"; onde os acessores funcionam simultaneamente como "setters" e "getters" (o que é comum em muita programação Perl) e se usa desta forma: use CD; my $cd1 = CD->new(); $cd1->id(1); $cd1->title('Born Again'); $cd1->artist('Black Sabbath'); # perceba que esta apenas é uma ilustração # didática e ingênua: # o objeto pode ser criado # e as variáveis automaticamente # preenchidas simultaneamente # por um comando como: # # $cd1 = CD->new( id => 1, title => 'Born Again', artist => 'Black Sabath' ); print "title: ", $cd1->title, "\n"; # imprime "title: Black Sabbath\n" Obviamente que o código acima é claramente redundante e chato. Se Perl é deste jeito, talvez programar em Java tenha mais *sex appeal*. Pelo menos lá, eu nem tenho de ficar referenciando o objeto sobre o qual o método foi invocado (o *$self*). package namespace.too.long.for.seemingly.respectful.java.code.CD; private int id; private String title; private String artist; # getters int get_id() { return id; } int get_title() { return title; } int get_artist() { return artist; } # setters void set_id( int id ) { this.id = id; } void set_title( String title ) { this.title = title; } void set_artist( String artist ) { this.artist = artist; } Pensando bem, Java é uma meleca com estas declarações todas, e tipos, etc. (A frase "é uma meleca" não foi muito técnica e talvez deva ser substituída por algo como "é tão prolixo quanto". Mas no fim, é uma embolação que "meleca" até define bem.) Mas não precisa ser assim. (Estou falando do código Perl. Para o Java, você pode usar o Eclipse para fazer o serviço sujo e repetir todo este código para você.) Usar "Class::Accessor" é uma alternativa (entre tantas outras) e o nosso código anterior se reduz a: # CD.pm package CD; use base qw( Class::Accessor ); BEGIN { __PACKAGE__->mk_accessors(qw( id title artist )); } 42; # the truth at the end of the package O mesmo código ilustrado antes para ser usado para construir instâncias de "CD" continua válido. Nenhuma repetição desnecessária e os acessores são automaticamente criados para você (inclusive poupando-o de inconvenientes com erros de nomes de variáveis e tal). Triangulo-pm, 2008-05-17 19:50 From joenio em gmail.com Sat May 17 19:50:52 2008 From: joenio em gmail.com (Joenio Costa) Date: Sat, 17 May 2008 23:50:52 -0300 Subject: [Triangulo-pm] [Perl-Coordenacao] Re: Triangulo Perl Mongers In-Reply-To: <73ddeb6c0805171337m77017058n7c6d288d78b95d98@mail.gmail.com> References: <73ddeb6c0805171337m77017058n7c6d288d78b95d98@mail.gmail.com> Message-ID: <65934b450805171950jde3bf8bwcbf507dab2b7cea5@mail.gmail.com> Se voce precisar de ajuda nisto conte comigo, e se estiver deacordo podemos hospedar o site do grupo no TWiki do Perl.org.br. 2008/5/17 Adriano Ferreira : > 2008/5/12 breno : -----------------------corta--------------------------- >> Bom, estou enviando este email a fim de completar um breve censo a >> respeito dos Grupos de Usuários Perl do Brasil, mas não consegui >> encontrar mais informações sobre o grupo (o site >> http://triangulo.pm.org dá um erro 403, dizendo que não tenho >> permissão para ver o conteúdo do servidor). > > Eu nunca arrumei o tempo para pôr o site funcionando. E isto nos > servidores do PM.org. Confesso, fui preguiçoso. Vai que eu melhoro > daqui em diante.