Re: [Rio-pm] [DÚVIDA]Hash: varias key pra um mesmo value
Aureliano, o Perl não é suficientemente inteligente para interpretar expressão regular como chave do hash :) Pelo que entendi, vc quer algo assim: my %codon = ( (map { "CG".$_ => "A" } qw(A C T G)), (map { "TT".$_ => "F" } qw(C T)), (map { "TT".$_ => "L" } qw(A G)), (map { "CU".$_ => "L" } qw(A C T G)), ); 2016-04-13 2:24 GMT+02:00 Aureliano Guedes: > Ola monges, > > Eu tenho uma dúvida, caso possam me ajudar. > Eu tenho varias códigos que acessam o mesmo valor (no caso que uso são > vários códons que traduzem o mesmo aminoácido). > > Exemplo: > Aminoacido -> Códons > > Sendo os aminoácidos representados por 20 letras diferentes mais o X (stop > códon). > E os codons, combinações de 3 nucleotídeos, sendo um total de 4 > nucleotídeos (A, T, C e G), logo temos 64 combinações de 3 nucleotídeos > (64 codons possíveis). > Por isso um mesmo aminoácido pode ser codificado por mais de um códon. > No caso do aminoácido Alanina (Ala || A) é códificado pelos códons GCA, > GCC, GCT ou GCU. Observe que os dois primeiros nucleotídeos são C e G, > respectivamente, e o terceiro pode ser ocupado por qualquer um dos 4 > nucleotídeo possíveis. > Dessa forma: > >- A -> CGA ou CGC ou CGT ou CGG > > Outros: > >- F -> TTC || TTT >- L -> TTA || TTG || CTA || CTG || CTC || CTT > > > Bom, meu objetivo é simplesmente criar um hash, como esse: > >- my %aa = ( "UUU" => "F", "UUC" => "F", "UUA" => "L", "UUG" => "L", >"UCU" => "S", "UCC" => "S", "UCA" => "S", "UCG" => "S", "UAU" => "Y", "UAC" >=> "Y", "UAA" => "X", "UAG" => "X", "UGU" => "C", "UGC" => "C", "UGA" >=> "X", "UGG" => "W", "CUU" => "L", "CUC" => "L", "CUA" => "L", "CUG" >=> "L", "CCU" => "P", "CCC" => "P", "CCA" => "P", "CCG" => "P", "CAU" >=> "H", "CAC" => "H", "CAA" => "Q", "CAG" => "Q", "CGU" => "R", "CGC" >=> "R", "CGA" => "R", "CGG" => "R", "AUU" => "I", "AUC" => "I", "AUA" >=> "I", "AUG" => "M", "ACU" => "T", "ACC" => "T", "ACA" => "T", "ACG" >=> "T", "AAU" => "N", "AAC" => "N", "AAA" => "K", "AAG" => "K", "AGU" >=> "S", "AGC" => "S", "AGA" => "R", "AGG" => "R", "GUU" => "V", "GUC" >=> "V", "GUA" => "V", "GUG" => "V", "GCU" => "A", "GCC" => "A", "GCA" >=> "A", "GCG" => "A", "GAU" => "D", "GAC" => "D", "GAA" => "E", "GAG" >=> "E", "GGU" => "G", "GGC" => "G", "GGA" => "G", "GGG" => "G",); > > > Contudo pensei em tomar outra abordagem, informar pra chave quem ela pode > ser. Não sei se é possível, mas eu comecei tentando algo como: > >- my %codon = ( "CG"./[ACTG]/ => "A", "TT"./[CT]/ => "F", >("TT"./[AG]/||"CU"./[ACTG]/) => "L",); > > Mas não funcionou. > > Pensei em pegar uma abordagem mais IUPAC, onde: > >- Y = C ou T >- R = A ou G >- N = A, C, G ou T > > *tem outros, mas por enquanto apenas estou vendo a possibilidade. > Então fiz: > >- my $Y = /[CT]/; >- my $R = /[AG]/; >- my $N = /[ACTG]/; >- >- my %codon = ( "CG".$N => "A", "TT".$Y => "F", ("TT".$R||"CU".$N) => >"L",); > > Mas não funcionou. > > > ___ > 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] Número no final do package
(0x2B or not 0x2B) воскресенье, 4 мая 2014 г. пользователь Adriano Ferreira написал: 2014-05-04 12:12 GMT-03:00 breno br...@rio.pm.orgjavascript:_e(%7B%7D,'cvml','br...@rio.pm.org'); : Só de curiosidade: http://returnvalues.useperl.at (especificamente, http://returnvalues.useperl.at/values.html) Eu costumo botar 1 em trabalhos profissionais, e 42 em projetos open-source. Em alguns módulos do SDL a gente botou all your base are belong to us, e o Dancer exporta a DSL true e recomenda seu uso nas apps feitas com ele. Qual o seu valor de retorno favorito? :D 0 but true =) []s -b 2014-05-03 18:30 GMT-03:00 Bruno Buss bruno.b...@gmail.comjavascript:_e(%7B%7D,'cvml','bruno.b...@gmail.com'); : Os dois 1os resultados do Google... http://stackoverflow.com/questions/5293246/why-the-1-at-the-end-of-each-perl-package http://stackoverflow.com/questions/3606528/why-do-you-have-to-put-a-1-at-the-end-of-a-perl-5-module 2014-05-03 18:03 GMT-03:00 Aureliano Guedes guedes_1...@hotmail.comjavascript:_e(%7B%7D,'cvml','guedes_1...@hotmail.com'); : Ola monges, tenho uma dúvida meio idiota: O que é aquele número no final do módulo?? exemplo: package Meu::Modulo; ... 1; No módulo do Garu mesmo: package Acme::BOPE; . 42; Eu sempre coloquei de forma automática o '1;', mas não faço ideia do que é, alguns módulos tem números diferentes. Mas o que é esse numero? Pra que serve? Como seu qual número devo colocar? Abraços, ___ Rio-pm mailing list Rio-pm@pm.org javascript:_e(%7B%7D,'cvml','Rio-pm@pm.org'); http://mail.pm.org/mailman/listinfo/rio-pm -- Bruno C. Buss http://www.brunobuss.net ___ Rio-pm mailing list Rio-pm@pm.org javascript:_e(%7B%7D,'cvml','Rio-pm@pm.org'); http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org javascript:_e(%7B%7D,'cvml','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] Array muito longo
Memória RAM é o limite. Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays 2014-04-15 18:33 GMT+02:00 Aureliano Guedes guedes_1...@hotmail.com: Ola, monges. Gostaria de saber quais opções eu tenho para gravar um numero muito grande de informações em um array. Exemplo, imagine que eu tenha uma rotina tosca como essa: sub multiplicador{ my @ini = (100..999); my $fim = 999; my @memo while ($fim != 100){ foreach (@ini){ my $m = $_ * $fim; push (@memo, $m); } $fim--; } } Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 * 999 ate 999*999. Os resultados de cada multiplicação são jogados para um array. Ou seja, um array grande pra caramba. Como faria para que @memo fosse capaz de guardar todos os valores? Qual é o limite de dados que posso normalmente guardar em um array? Obrigado, ___ 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] [Curiosidade] Perl no smartphone
Para iOS, temos o PerlMotion: https://github.com/goccy/perl-motion Não é exatamente Perl, mas permite escrever apps num subset te Perl. Por outro lado, instalar Perl normal num iOS c/jailbreak é dois palito: http://iphonesdkdev.blogspot.nl/2014/01/how-to-install-perl-theos-and-llvm.html 2014-03-03 7:03 GMT+01:00 Renato Santos renato.c...@gmail.com: Rodar Perl é relativamente simples, difícil é criar uma app. Dado que o Perl tem poucas dependências, você precisa ter um compilar C no smartphone e paciência. Acho que Tinha um grupo, uns 3 anos atrás, no Android 1.5 (sim, já existiu) que rodavam Perl. Mas não sabe mais disso! On Mar 3, 2014 12:26 AM, Aureliano Guedes guedes_1...@hotmail.com wrote: Ola monges, So uma curiosidade. Alguem conhece ou ja viu algum metodo, projeto ou mesmo algum grupo que tenha apenas a vontade de rodar perl em smartphone, seja android windows phone ou iOS? T+ ___ 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] Variavel - caminho padrao para diretorios de testes
Olá Samir! Não há necessidade de passar o absolute path, os testes são sempre executados da raiz da sua distribuição: my @condor_q = read_file( 't/input.txt' ) ; # isso é suficiente Uma nota: os testes em Perl tem extensão padrão .t, portanto, o nome do arquivo de testes ficaria mais consistente se fosse 01_basic.t. Abs 2014-02-24 7:58 GMT+01:00 Samir Cury samircu...@gmail.com: E ai pessoal, faz um tempo que nao passo por aqui, mas felizmente estou voltando a usar Perl no cotidiano e me livrando da ferrugem. Estava revisando um modulo que falta pouco para subir pro CPAN, e me deparei com uma coisa que nao me pareceu o melhor jeito de se fazer : https://github.com/samircury/HTCondor--Queue--Parser/blob/master/t/01_basic.pl#L11 Penso isso pois uma vez enquanto escrevia testes em Python me falaram de uma variavel que referenciava o diretorio de testes. Imaginei que pudesse existir um equivalente em Perl mas minhas buscas nao retornaram nada especifico. Achei interessante perguntar aqui na lista se conhecem algum jeito melhor. De repente esta na ponta da lingua de quem escreve modulos direto. Do jeito que esta ja passa no prove [1] mas como nao tenho muita pratica com modulos e sempre bom perguntar. Abracos, Samir [1] : ~/code/Condor--Queue--Parser $ prove -l t/01_basic.pl t/01_basic.pl .. ok All tests successful. Files=1, Tests=9, 2 wallclock secs ( 0.03 usr 0.00 sys + 1.27 cusr 0.03 csys = 1.33 CPU) Result: PASS ___ 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] Configuração de usuário não root no cpan Perl Roll em Rocks Cluster
Olá Nicole! Já passei por situação semelhante à sua, quando não podia atualizar o Perl default do sistema e a opção foi instalar um Perl mais atualizado avulso no /usr/local. Para sempre usar o Perl do /usr/local, 3 medidas foram tomadas: 1. export PATH=/usr/local/bin:$PATH 2. Os shebangs de todos os scripts executáveis do projeto foram modificados de: #!/usr/bin/perl para: #!/usr/bin/env perl 3. local::lib foi utilizado para CPAN desovar no $HOME. O local::lib requer uma intervenção do .profile do sistema, para inicializar o environment apropriadamente. Seguem os passos para instalar o local::lib dessa forma. 3.1. Download do local::lib: $ wget http://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.04.tar.gz $ tar xzvf local-lib-2.04.tar.gz $ cd local-lib-2.04/ 3.2. Instalação do local::lib: $ perl Makefile.PL --bootstrap=$HOME/perl5 $ make $ make test $ make install 3.3. Ativando local::lib na inicialização da shell (Bash): $ cat PROFILE $HOME/.profile eval \$(perl -I\$HOME/perl5/lib/perl5/ -Mlocal::lib) PROFILE $ A idéia aqui é que rodar perl -I$HOME/perl5/lib/perl5/ -Mlocal::lib retorna para STDOUT as tais das variáveis de ambiente que fazem o Perl buscar instalação dos módulos em um lugar específico ($HOME). Pode simplesmente colar essas variáveis direto no .profile, ou (como demonstrado acima) rodar eval do output do Perl. 3.4. Carregar a configuração: . $HOME/.profile 3.5. Prosseguindo com a configuração/teste do CPAN e do cpanm (essa configuração faz as dependências serem instaladas automaticamente): $ cpan cpan[1] o conf prerequisites_policy follow cpan[2] o conf commit cpan[3] install App::cpanminus cpan[4] quit Boa sorte! 2014-01-29 Nicole Scherer bionica2007-p...@yahoo.com Boa tarde, queridos Mongers, eu não queria importuná-los com problemas simples, mas após três dias batendo a cabeça e vasculhando fóruns na internet sem solução para algumas das perguntas, recorro a vocês. Vou tentar explicar a novela. Montamos um cluster HPC para pesquisa usando o Rocks 6.1 ( http://www.rocksclusters.org/) -- um tipo de linux que instala outro linux em todos os nós do cluster e gerencia tudo isso. Novidade pra mim, mas funciona. Esse Rocks instala os chamados Rolls, entre eles o próprio SO (neste caso o RHEL6) e outros Rolls úteis, como SGE, Ganglia, Web-Server, Bio, Perl (4.14.2) entre outros. Estes Rolls são instalados em /opt/ e as vezes coexistem com os binários do SO. Desta forma, tenho duas versões de Perl: - a do sistema (RHEL6): $ /usr/bin/perl -v This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi - e a do Rocks: $ /opt/perl/bin/perl -v This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-thread-multi Cada qual com as suas bibliotecas. @INC: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . @INC: /opt/perl/lib/site_perl/5.14.2/x86_64-linux-thread-multi /opt/perl/lib/site_perl/5.14.2 /opt/perl/lib/5.14.2/x86_64-linux-thread-multi /opt/perl/lib/5.14.2 . Agora é que começam meus problemas... Primeiro: Alguém já teve experiência com duas instalações coexistentes de Perl? Posso ter problemas de funcionamento no SO se eu mover o /usr/bin/perl e criar um link do /opt/perl/bin/perl para /usr/bin/perl (uma vez que as shebang dos scripts costuma ter este endereço). Colocar simplesmente /opt/perl/bin no início do $PATH pode não ser a solução. O CPAN só está instalado na versão do Rocks, o que me motiva mais a deixá-lo como default. Como a maioria dos usuários não terão privilégios de root e além disso, qualquer instalação no sistema operacional tem que ser espelhada para todos os nós, a melhor opção para instalar pacotes é na home dos usuários, concordam? Então eu quero deixar tudo o mais fácil possível para que os usuários instalem os pacotes desejados. Como não teremos acesso direto à internet usei o minicpan para criar um mirror em uma pasta compartilhada com minha máquina local. Configurei o urllist do cpan pra ela e ficou tudo ok. Agora esbarrei em um problema que não estou achando resposta fácil. Quando executo o cpan pela primeira vez como usuário comum, da forma mais automática possível, ele cria, como esperado o arquivo MyConfig.pm e toda a estrutura de diretórios no home do usuário. Ele executa quase tudo com perfeição, substituindo o endereço default pelo do usuário em QUASE todos os itens, menos em prefs_dir. [hpcst06@crab ~]$ grep cpan .cpan/CPAN/MyConfig.pm 'build_dir' = q[/home/hpcst06/.cpan/build], 'cpan_home' = q[/home/hpcst06/.cpan], 'histfile' = q[/home/hpcst06/.cpan/histfile], 'keep_source_where' = q[/home/hpcst06/.cpan/sources], 'prefs_dir' = q[/export/cpan/cpan/prefs], (O default cpan_home é /export/cpan/cpan ) [hpcst06@crab ~]$ grep cpan /opt/perl/lib/5.14.2/CPAN/Config.pm 'build_dir'
Re: [Rio-pm] Configuração de usuário não root no cpan Perl Roll em Rocks Cluster
Isso mesmo; na primeira vez em que perl -Mlocal::lib roda ele cria os diretórios necessários. Se salvar as variáveis de ambiente, não precisa rodar nunca mais. Entretanto, as variáveis serão diferentes para cada usuário. Para melhorar a automação, basta colocar no final do /etc/profile (sim, o do sistema): eval $(perl -Mlocal::lib). Desse jeito os usuários automagicamente terão local::lib configurado ao fazer o login :) 2014-01-30 Nicole Scherer bionica2007-p...@yahoo.com Obrigada, Stanislaw! Então o usuário só precisará rodar o perl -Mlocal::lib uma única vez e colocar este output no .bashrc ou .profile, certo? Tendo feito isso, ele nunca mais precisará invocar o local::lib, ou terá que fazer isto toda vez que for instalar novos pacotes? Com as variáveis de ambiente definidas ainda preciso do local::lib? Abraços, Nicole Em Quinta-feira, 30 de Janeiro de 2014 11:06, Stanislaw Pusep creakt...@gmail.com escreveu: Olá Nicole! O processo que eu descrevi é o de bootstrapping; se o Perl do seu /opt/perl já tiver local::lib instalado como root, não precisa dessa etapa. O que acontece se você rodar perl -Mlocal::lib? Aqui, por exemplo, aparece: PATH=/Users/stas/perl5/bin${PATH+:}$PATH; export PATH; PERL5LIB=/Users/stas/perl5/lib/perl5${PERL5LIB+:}$PERL5LIB; export PERL5LIB; PERL_LOCAL_LIB_ROOT=/Users/stas/perl5${PERL_LOCAL_LIB_ROOT+:}$PERL_LOCAL_LIB_ROOT; export PERL_LOCAL_LIB_ROOT; PERL_MB_OPT=--install_base \/Users/stas/perl5\; export PERL_MB_OPT; PERL_MM_OPT=INSTALL_BASE=/Users/stas/perl5; export PERL_MM_OPT; Se você colar o output produzido no seu sistema para o .bashrc/.profile, o Perl se sentirá em casa no $HOME :) O cpanminus é opcional; única coisa absolutamente necessária é que perl -Mlocal::lib seja rodado para inicializar o $HOME/perl5, e que as variáveis de ambiente estejam definidas do jeito que o perl -Mlocal::lib diz. 2014-01-30 Nicole Scherer bionica2007-p...@yahoo.com Obrigada Stanislaw e Aureliano! Aureliano, a bioinformática está tomada por mulheres :-) Já foste no X-Meeting? Stanislaw, como gestora do cluster, meu objetivo é deixar para o usuário o sistema pronto para que ele possa instalar seus módulos localmente sem ter que fazer acrobacias. Eu já instalei o local::lib no sistema como root, então não seria necessário que o usuário instalasse novamente, correto? Ou ele precisaria fazer sua própria instalação? Quando o usuário faz sua primeira incursão no cpan e realiza a configuração, aparece a seguinte mensagem: --- local::lib is installed. You must now add the following environment variables to your shell configuration files (or registry, if you are on Windows) and then restart your command line shell and CPAN before installing modules: Would you like me to append that to /home/hpcst06/.bashrc now? [yes] --- Porém, como podes ver, o following environment variables está vazio e nenhuma modificação é feita no .bashrc Esta etapa é que deveria definir as tais variáveis de ambiente. Não entendo por que não está funcionando. Desta forma, a única solução seria mesmo acrescentar estas linhas ao .profile a força. Uma opção que tenho é criar toda a árvore de diretórios do perl e do cpan e colocar no /etc/skel para ser criada junto com o usuário, mas talvez isso seja demais, não? Qual o objetivo de instalar o App::cpanminus? A partir daí o usuário deve usar cpanm ao invés de cpan? Outra dúvida, se eu não instalar o local::lib nos nós do cluster (só instalei no frontend), pode dar problema na hora de executar os programas em paralelo? Digo, o local::lib só é chamado na instalação de módulos e na configuração do ambiente local, não é usado na execução dos módulos, certo? O home do usuário é montado em cada nó durante a execução, então o perl vai executar com as variáveis de ambiente já definidas pelo usuário, então não vai precisar executar o local::lib, certo? Obrigada pela ajuda! Abraços, Nicole Em Quinta-feira, 30 de Janeiro de 2014 8:38, Aureliano Guedes guedes_1...@hotmail.com escreveu: Caraca. Complexo. O melhor, foi ver a pela primeira vez uma mulher na bioinformatica. Hello colega bioinformata. Stanislaw Pusep creakt...@gmail.com escreveu: Olá Nicole! Já passei por situação semelhante à sua, quando não podia atualizar o Perl default do sistema e a opção foi instalar um Perl mais atualizado avulso no /usr/local. Para sempre usar o Perl do /usr/local, 3 medidas foram tomadas: 1. export PATH=/usr/local/bin:$PATH 2. Os shebangs de todos os scripts executáveis do projeto foram modificados de: #!/usr/bin/perl para: #!/usr/bin/env perl 3. local::lib foi utilizado para CPAN desovar no $HOME. O local::lib requer uma intervenção do .profile do
Re: [Rio-pm] RPerl - Austin.pm
Não tem, mas Reini Urban estava trabalhando nisso... Mas acho que acabou virando outra coisa. четверг, 28 ноября 2013 г. пользователь Tiago Peczenyj писал: Aliás, Perl tem JIT optimization? Le 27 nov. 2013 22:43, Tiago Peczenyj tiago.pecze...@gmail.comjavascript:_e({}, 'cvml', 'tiago.pecze...@gmail.com'); a écrit : Não é impossível, uma vez que você remova algum overhead por exemplo. Entretanto vc vai sacrificar alguma coisa. De repente vc vai ter menos features. Vai sacrificar backward compatibility ,etc. Depende do seu gargalo. Se for I/O pode não fazer a menor diferença ser 200x mais rápido. Le 27 nov. 2013 15:35, Aureliano Guedes guedes_1...@hotmail.com a écrit : 200 vezes mais rapido que Puro Perl??? Parece ilusão -- Date: Wed, 27 Nov 2013 05:39:02 -0200 From: j...@joaocoutinho.com.br To: rio-pm@pm.org Subject: [Rio-pm] RPerl - Austin.pm Repassando, da fan page do FB. [ ]'s, João -- Forwarded message -- From: Will Braswell notification+hp11o...@facebookmail.com Date: Nov 26, 2013 9:50 PM Subject: [Rio de Janeiro Perl Mongers] Hello Perl friends, I'm the President of... To: Rio de Janeiro Perl Mongers 20431022...@groups.facebook.com Will Braswell a publié dans Rio de Janeiro Perl Mongershttps://www.facebook.com/n/?groups/20431022699/permalink/10152067314167700/aref=91127644medium=emailmid=8ff30f2G3f062f75G56e7f5cG96bcode=1.1385509828.AbmmVNOWK0UiLfcsn_m=jc%40joaocoutinho.com.br [image: Will Braswell]https://www.facebook.com/n/?profile.phpid=1828910954aref=91127644medium=emailmid=8ff30f2G3f062f75G56e7f5cG96bcode=1.1385509828.AbmmVNOWK0UiLfcsn_m=jc%40joaocoutinho.com.br Will Braswellhttps://www.facebook.com/n/?profile.phpid=1828910954aref=91127644medium=emailmid=8ff30f2G3f062f75G56e7f5cG96bcode=1.1385509828.AbmmVNOWK0UiLfcsn_m=jc%40joaocoutinho.com.br 26 novembre 21:50 Hello Perl friends, I'm the President of http://Austin.pm/http://www.facebook.com/l/YAQEvQgEo/Austin.pm/, we're working to finish RPerl v1.0, will you please consider making a pledge to support the project? Thanks so much! http://www.facebook.com/l/VAQFFdrWkAQGH65Cehckfv01MH8lAHdb7R5D4QM5MzY1-fA/www.kickstarter.com/projects/wbraswell/perl-5-optimizing-compiler-rperl-v10 -- Отправлено с моего iPhone ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] xpath
Matheus, você provavelmente conhece os seletores CSS, esses popularizados pelo jQuery. Pois é, não há necessidade de aprender XPath, caso já conheça esses seletores: https://metacpan.org/module/HTML::Selector::XPath (seletor CSS pode ser convertido em XPath, porém a recíproca não é válida!) Aliás, talvez o Web::Query (https://metacpan.org/module/Web::Query) seja mais familiar/intuitivo para scraping do que Web::Scraper. ABS() 2013/4/3 Matheus Lucas mal...@yahoo.com.br Ola amigos ! Esbarrei em um problema com algumas regex aqui em arquivos html e me deram a ideia de usar xpath para resolver. Eu nunca trabalhei com xpath e achei muitos modulos na cpan. Gostaria de saber se alguem ja trabalhou com algum modulo de xpath pra perl e gostaria de receber opniões que modulo é interessante, mais rapido de aprender e tals ? Ja vi que tem varios, mais ainda não sei qual é o melhor para o problema e continuo a estudar. Gradeço se alguem puder me orientar nisso. Agradeço a todos ! * * * * * * ** Matheus Lucas Tecnologia em Sistemas para Internet Viçosa-MG *Seja livre, use Linux !* ___ 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] use 5.016 ou use strict/warnings
use common::sense; ABS() 2013/3/1 Marcio Ferreira marciodesouzaferre...@gmail.com Well, o que vocês preferem entre _use 5.016_ e _use strict; use warnings;_ ? Faz tempo que uso o _use 5.016_ e vocês? Emendando outra, que versão de perl vocês usam em produção? []s, Marcio Ferreira skype: marcio.ferreir4 (21) 8365-7768 ___ 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] [Passatempo] Interpretador para BrainFuck
Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim: #!/usr/bin/env perl use 5.010; use strict; use warnings qw(all); local ($|, $/) = (1, \1); for my $instr (DATA) { given ($instr) { when ('') { ... } when ('') { ... } when ('+') { ... } when ('-') { ... } when ('.') { ... } when (',') { ... } when ('[') { ... } when (']') { ... } default { next } } } __DATA__ +++ + [[+ +-][+-][++[- -[++-][+-]+[[-][-]][[+ -][-]]][++-][+-]+[[-][-]] [+[-]]][+ +++.[-]]++[--] .[-] [++-][+-]-[.. [-]][++-][+-][+-][+-]-] Lição de casa: preencher os espaços dos '...' para que calcule e imprima 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 (pq Hello World! é muito fácil, rsss) ABS() 2012/12/12 Aureliano Guedes guedes_1...@hotmail.com Ainda não tinha me aventurado nas novidades do Perl 5.16. o when eu entendi, mas o given não, alguem poderia me explicar o uso do given?? O break ja funciona no 5.16?? se sim, como??? -- From: creakt...@gmail.com Date: Wed, 12 Dec 2012 14:06:14 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck As variáveis @loop e $s não afetam a lógica do seu programa. Isso é, a sua implementação das instruções de ciclo condicional, [ e ], está incompleta. Outra coisa, ao invés de usar if(){}elsif(){}, procure usar given/when, nesse caso seria mais apropriado. Por fim, o I/O do brainfuck é por caractere, então certifique-se de que o buffering de I/O do Perl esteja desligado e que retorne 1 caractere de cada vez: local ($|, $/) = (1, \1); ABS() 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com Por isso é passatempo, é pra quem tem tempo. hahaha Valeu -- From: renato.c...@gmail.com Date: Tue, 11 Dec 2012 21:45:03 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck pow, se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha # semtempo 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com Não so isso, deve ter algo mais. Mesmo trocando $p-- if ($i eq ''); por $p-- if ($i eq '');. Os caracteres que saem são estranhos, não sai o que eu queria. -- From: renato.c...@gmail.com Date: Tue, 11 Dec 2012 21:36:03 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck não são essas linhas aqui? 1. $p++ if ($i eq ''); 2. $p-- if ($i eq ''); 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com ahsuahuhasuahsuah Da hora mesmo, quando terminar, quem sabe não faço algo do tipo. -- From: creakt...@gmail.com Date: Tue, 11 Dec 2012 21:15:38 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck Dahora, parabéns :D BTW, isso me lembrou de um dialeto do brainfuck, o trollscript: https://github.com/caius/trollscript Isso é um hello world em trollscript: Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll É sério. ABS() 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com Ola monges, Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um interpretador para BrainFuck. Futuramente pretendo desenvolver um compilador. Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades. http://pastebin.com/aEppcPKt Para testarem um hello wolrd em BF: ++[+-]++.+.+++..+++.++.+++..+++.--..+.. Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos Aqui tem um pequeno tutorial tambem: http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck Aqui tambem: Basicamente é isso: http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610 ___ 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/#%21/renato_cron
Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
As variáveis @loop e $s não afetam a lógica do seu programa. Isso é, a sua implementação das instruções de ciclo condicional, [ e ], está incompleta. Outra coisa, ao invés de usar if(){}elsif(){}, procure usar given/when, nesse caso seria mais apropriado. Por fim, o I/O do brainfuck é por caractere, então certifique-se de que o buffering de I/O do Perl esteja desligado e que retorne 1 caractere de cada vez: local ($|, $/) = (1, \1); ABS() 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com Por isso é passatempo, é pra quem tem tempo. hahaha Valeu -- From: renato.c...@gmail.com Date: Tue, 11 Dec 2012 21:45:03 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck pow, se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha # semtempo 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com Não so isso, deve ter algo mais. Mesmo trocando $p-- if ($i eq ''); por $p-- if ($i eq '');. Os caracteres que saem são estranhos, não sai o que eu queria. -- From: renato.c...@gmail.com Date: Tue, 11 Dec 2012 21:36:03 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck não são essas linhas aqui? 1. $p++ if ($i eq ''); 2. $p-- if ($i eq ''); 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com ahsuahuhasuahsuah Da hora mesmo, quando terminar, quem sabe não faço algo do tipo. -- From: creakt...@gmail.com Date: Tue, 11 Dec 2012 21:15:38 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck Dahora, parabéns :D BTW, isso me lembrou de um dialeto do brainfuck, o trollscript: https://github.com/caius/trollscript Isso é um hello world em trollscript: Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll É sério. ABS() 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com Ola monges, Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um interpretador para BrainFuck. Futuramente pretendo desenvolver um compilador. Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades. http://pastebin.com/aEppcPKt Para testarem um hello wolrd em BF: ++[+-]++.+.+++..+++.++.+++..+++.--..+.. Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos Aqui tem um pequeno tutorial tambem: http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck Aqui tambem: Basicamente é isso: http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610 ___ 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/#%21/renato_cron ___ 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/#%21/renato_cron ___ 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] [Passatempo] Interpretador para BrainFuck
Dahora, parabéns :D BTW, isso me lembrou de um dialeto do brainfuck, o trollscript: https://github.com/caius/trollscript Isso é um hello world em trollscript: Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll É sério. ABS() 2012/12/11 Aureliano Guedes guedes_1...@hotmail.com Ola monges, Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um interpretador para BrainFuck. Futuramente pretendo desenvolver um compilador. Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades. http://pastebin.com/aEppcPKt Para testarem um hello wolrd em BF: ++[+-]++.+.+++..+++.++.+++..+++.--..+.. Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos Aqui tem um pequeno tutorial tambem: http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck Aqui tambem: Basicamente é isso: http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610 ___ 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] Chaves de hash
Todos sabem que a WWII foi desencadeada por causa da festa de aniversário de 50 anos de Hitler. ABS() 2012/11/30 Aureliano Guedes guedes_1...@hotmail.com Bruno, no meu if funcionou tanto com quanto com and. O meu erro mesmo foi que a regex pegava um espasso. Bem a minha duvida ficou em porque seria problematico colocar reais em chaves de hash no meu caso? Se eu fosse pesquisar um valor especifico e tivesse duas ou mais chaves com o mesmo valor real seria problema mas no meu caso umporta que o valor esteja em um determinado intervalo, podem ter 20 chaves iguais, estando no intervalo eu quero os 20 valores. 49?? -- From: leonardo.bal...@gmail.com Date: Fri, 30 Nov 2012 00:15:50 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] Chaves de hash Quero participar dessa discussao antes do 50. Por que tanta peculiariade na dicotomia de popular? Na buzilis da cizania ja nao era mais sobre Perl ou foi impressao minha? Leo Balter - via mobile Em 30/11/2012, às 00:02, Marcio Ferreira marciodesouzaferre...@gmail.com escreveu: 47 On Nov 29, 2012 11:35 PM, Renato Santos renato.c...@gmail.com wrote: #define float_epsilon 0.1;#define float_equal(a,b) (fabs((a) - (b)) float_epsilon) *BTW* 2012/11/29 Blabos de Blebe bla...@gmail.com float_equal -- Saravá, Renato CRON http://www.renatocron.com/blog/ @renato_cron http://twitter.com/#%21/renato_cron ___ 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 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Comparação de arquivos
Esta sintaxe de expressão regular é chamada de named capture. Surgiu no Perl v5.10. Ao invés de $1, $2, $3, ..., você dá um nome legível à captura. Por si só, já é bastante útil, mas a utilidade maior aparece na possibilidade da construção de grammars, similares a BNF ( https://pt.wikipedia.org/wiki/Formalismo_de_Backus-Naur#Exemplo). Recomendo esse artigo para aprender a usar estes recursos: http://www.effectiveperlprogramming.com/blog/1479 ABS() 2012/11/26 Nicole bionica2007-p...@yahoo.com Oi a todos, aproveitando a paciência infinita do Breno... Poderias esclarecer como funciona isto: (?tag...) e o que acontece então aqui: valores agrupados na regex por nome dentro do hash %+. No caso, acessei o grupo (?mirna) fazendo $+{mirna}; Criaste um hash de nome %+ É uma variável reservada? Qual o valor que assume $mirna aqui? Na primeira vez que entra no if, $mirna está vazio, não? Como pode ser key do hash %dados assim? []'s Nicole Scherer -- *De:* breno br...@rio.pm.org *Para:* Perl Mongers Rio de Janeiro rio-pm@pm.org *Enviadas:* Sábado, 24 de Novembro de 2012 9:45 *Assunto:* Re: [Rio-pm] Comparação de arquivos 2012/11/24 Aureliano Guedes guedes_1...@hotmail.com: Se não for ser muito chato, como faço para seguir a forma abaixo: 2) trocar de abordagem, fazendo seu parser ler linha a linha (sem modificar $/) e ir acumulando as linhas até encontrar um símbolo que indique nova entrada. seria algo do tipo: while ($fh){ if(/primeira linha/){ print $_; } elsif (/ultima linha/){ #sair do loop } else { print $_ } } Algo como (atenção, código não testado): ---8--- my %dados = (); my $mirna; my $acumulador; while (my $linha = $fh) { if ( $linha =~ m{tag magica (?mirna\S+)} ) { $dados{$mirna} = $acumulador if $mirna; $mirna = $+{mirna}; $acumulador = q(); } else { $acumulador .= $linha; } } use DDP; p %dados; ---8--- O que isso faz (ou deveria fazer: já mencionei que não testei? Programar a essa hora da manhã não é meu forte, então favor desconsiderar qualquer besteira): 1) le o arquivo linha por linha, atribuindo o valor de cada linha a $linha (sem usar $_) 2) sempre que encontrar a tag mágica que separa entradas (estou assumindo que a tag indica um novo registro que pode ser chave do seu hash de dados: 2.1) se já estiver com um registro em memória ($mirna), bota os dados acumulados ($acumulador) dentro do hash; 2.2) atribui à $mirna o novo registro encontrado. Note que estou usando grupos nomeados na regex, fazendo (?tag...) em vez de apenas (...). Isso funciona a partir do 5.10.0 e me permite acessar os valores agrupados na regex por nome dentro do hash %+. No caso, acessei o grupo (?mirna) fazendo $+{mirna}; 2.2) zera o acumulador. 3) se não encontrar a tag mágica, vai acumulando os dados. Dentro desse 'else' vc pode fazer coisas como next if $linha =~ /.../ caso não queira guardar alguma linha, por exemplo. 4) Depois do while vc pode inspecionar %dados para saber se está tudo ok. Entendeu? []s -b ___ 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] HTML::Parse
++breno! ABS() 2012/10/25 breno br...@rio.pm.org 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com: Eu fiz de uma forma que deu certo, mas ficou feio e cheio de más praticas, mandando reguex em xml e tals. Quero fazer de forma bonita com XPath e tals. Mas ainda estou em processo de entendet tudo isso. Estou tentando pegar o primeiro link da lista de videos de um resultado de pesquisa do YouTube. Para isso estou ultilizando uma API do YouTube: https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#Searching_for_Videos Onde estão os erros fora tudo?? - http://pastebin.com/T06Mi1Nx Olha, fora tudo, posso te garantir que não há erros :) Pergunta: vc tá fazendo isso só por diversão, né? Isso porque uma busca rápida no CPAN me levou ao WebService::GData::YouTube, que faz buscas e muito mais. https://metacpan.org/module/WebService::GData::YouTube#search_video O one-liner abaixo, por exemplo, exibe o título do primeiro resultado para uma busca no YouTube por perl: perl -MWebService::Gdata::YouTube -E 'my $yt = WebService::GData::YouTube-new; $yt-query-q( q[perl] )-limit(1,0); say $_-title foreach @{ $yt-search_video() }' []s -b ___ 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] print() on closed filehandle
Você usa Windows, não? Neste caso, precisa dar um binmode($fh) logo após o open($fh, ...). Ou então abrir o handle como open($fh, ':raw', 'nome.mp3'). O erro acontece por que o Perl do Windows substitui byte \x0A pela sequencia \x0D\x0A em arquivos texto. Em arquivo não-texto, isso não é nada bom. ABS() 2012/10/21 Aureliano Guedes guedes_1...@hotmail.com Não ainda, vou experimentar e volto com os resultados. -- From: tiago.pecze...@gmail.com Date: Sun, 21 Oct 2012 17:54:30 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] print() on closed filehandle então alguma coisa acontece durante o transporte ou o protocolo de transmissão. estou sem tempo de analisar mas vc experimento usar o wireshark? 2012/10/21 Aureliano Guedes guedes_1...@hotmail.com MD5 diferente, ate o tamanho do arquivo é diferente, baixei o original pelo FF e a musica esta normal, alem, de que tem o tamanho de 6,16MB. Em contrapartida o arquivo obtido pelo script fica com 6,19MB. Ja tentei baixar denovo, continua o mesmo problema. -- From: tiago.pecze...@gmail.com Date: Sun, 21 Oct 2012 17:25:59 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] print() on closed filehandle analise o arquivo original e o que vc esta salvando, vc pode ter corrompido algum byte. se o md5 dos dois for igual o problema é outro, se for diferente analise o que o ffmpeg -i diz do arquivo (ele vai analisar o cabeçalho do mp3). 2012/10/21 Aureliano Guedes guedes_1...@hotmail.com Realmente, um erro por falta de atenção. Agora deu certo. Contudo, os arquivos chegam com algum problema que não sei o que é. As musicas não tocam normalmente, elas ficam com um barulho estranho e quase não da para reconhecer a musica, é como se estivesse acelerado. Será que é problemas calsado devido a forma que estou manipulando esse tipo de arquivo? -- From: tiago.pecze...@gmail.com Date: Sun, 21 Oct 2012 16:57:12 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] print() on closed filehandle sem falar que esta usando open com 2 argumentos. tente usar com 3 argumentos separando o modo de abrir do nome do arquivo com uma virgula ao inves de um ponto para concatenar. alias vc pode interpolar assim open my $fh,,$nome.mp3; ou open my $fh,,${nome}.mp3; On Sun, Oct 21, 2012 at 4:54 PM, Ole Peter Smith ole@gmail.comwrote: espacos no nome do arquivo? (sempre, como letras acentuadas, abominavel...) 0le Send via Android On Oct 21, 2012 3:38 PM, Aureliano Guedes guedes_1...@hotmail.com wrote: Ola monges. Estou com problema para salvar arquivos *.mp3 recebidos via download. Ao salvar a mensagem retornada é 'print () on closed filehandle FH at C:\User\AG\Desktop\mes.pl line 31.'. O sistema so retorna 'Invalid argument' quando uso o $!. Então usei o autodie para ver o que me retornava: Can't open 'Thaeme e Thiago - Ai que do.mp3' for writing: at 'Invalid argument' C:\User\AG\Desktop\mes.pl line 19. Enfim, não estou entendendo o erro retornado. http://pastebin.com/qxCMLv1V #!/usr/bin/env perl use common::sense; use WWW::Mechanize; use autodie; sub parse { my ($self) = shift; $self =~ s/\s+/\+/g; chomp $self; print Now -- . $self . \n\n; return (http://www.buscamp3.org/busca/; . $self); } sub gd { my ($self, $name) = @_; print $self . == . $name . \n\n; open my $fh,. $name . .mp3; my $m = WWW::Mechanize-new(); my $p = $m-get($self); $p = $p-decoded_content; $m-max_redirect(1); my @Links = $m-links(); my $w = 0; SWU: foreach my $link(@Links){ my @a = split (/, $link-url()); if ($a[1] =~ m/dl/gi){ print OK!\n; my $c = $m-get(http://www.buscamp3.org; . $link-url()); print $fh $c-decoded_content; close $fh; $w = 1; } last SWU if ($w == 1); } undef $m; } open IN, $ARGV[0] or die; foreach (IN){ print Search for: . $_ . \n; my $a = parse($_); gd($a, $_); print \n\n; } ___ 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://pacman.blog.br ___ 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://pacman.blog.br ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list
Re: [Rio-pm] print() on closed filehandle
Assumindo que o MP3 tenha uma entropia próxima de 8 bits por byte (algo que definitivamente não vale para um arquivo .pl, por mais que nos caçoem), um arquivo de 6,16MB poderá ter cerca de 25 mil ocorrências de \x0A. Mapeando CR = CRLF, pode crescer em cerca de 50KB. Acho que 6,19MB está dentro da faixa :) ABS() 2012/10/21 Tiago Peczenyj tiago.pecze...@gmail.com mas isso nao explica o tamanho do video ser tão diferente... 2012/10/21 Stanislaw Pusep creakt...@gmail.com Você usa Windows, não? Neste caso, precisa dar um binmode($fh) logo após o open($fh, ...). Ou então abrir o handle como open($fh, ':raw', 'nome.mp3'). O erro acontece por que o Perl do Windows substitui byte \x0A pela sequencia \x0D\x0A em arquivos texto. Em arquivo não-texto, isso não é nada bom. ABS() 2012/10/21 Aureliano Guedes guedes_1...@hotmail.com Não ainda, vou experimentar e volto com os resultados. -- From: tiago.pecze...@gmail.com Date: Sun, 21 Oct 2012 17:54:30 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] print() on closed filehandle então alguma coisa acontece durante o transporte ou o protocolo de transmissão. estou sem tempo de analisar mas vc experimento usar o wireshark? 2012/10/21 Aureliano Guedes guedes_1...@hotmail.com MD5 diferente, ate o tamanho do arquivo é diferente, baixei o original pelo FF e a musica esta normal, alem, de que tem o tamanho de 6,16MB. Em contrapartida o arquivo obtido pelo script fica com 6,19MB. Ja tentei baixar denovo, continua o mesmo problema. -- From: tiago.pecze...@gmail.com Date: Sun, 21 Oct 2012 17:25:59 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] print() on closed filehandle analise o arquivo original e o que vc esta salvando, vc pode ter corrompido algum byte. se o md5 dos dois for igual o problema é outro, se for diferente analise o que o ffmpeg -i diz do arquivo (ele vai analisar o cabeçalho do mp3). 2012/10/21 Aureliano Guedes guedes_1...@hotmail.com Realmente, um erro por falta de atenção. Agora deu certo. Contudo, os arquivos chegam com algum problema que não sei o que é. As musicas não tocam normalmente, elas ficam com um barulho estranho e quase não da para reconhecer a musica, é como se estivesse acelerado. Será que é problemas calsado devido a forma que estou manipulando esse tipo de arquivo? -- From: tiago.pecze...@gmail.com Date: Sun, 21 Oct 2012 16:57:12 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] print() on closed filehandle sem falar que esta usando open com 2 argumentos. tente usar com 3 argumentos separando o modo de abrir do nome do arquivo com uma virgula ao inves de um ponto para concatenar. alias vc pode interpolar assim open my $fh,,$nome.mp3; ou open my $fh,,${nome}.mp3; On Sun, Oct 21, 2012 at 4:54 PM, Ole Peter Smith ole@gmail.comwrote: espacos no nome do arquivo? (sempre, como letras acentuadas, abominavel...) 0le Send via Android On Oct 21, 2012 3:38 PM, Aureliano Guedes guedes_1...@hotmail.com wrote: Ola monges. Estou com problema para salvar arquivos *.mp3 recebidos via download. Ao salvar a mensagem retornada é 'print () on closed filehandle FH at C:\User\AG\Desktop\mes.pl line 31.'. O sistema so retorna 'Invalid argument' quando uso o $!. Então usei o autodie para ver o que me retornava: Can't open 'Thaeme e Thiago - Ai que do.mp3' for writing: at 'Invalid argument' C:\User\AG\Desktop\mes.pl line 19. Enfim, não estou entendendo o erro retornado. http://pastebin.com/qxCMLv1V #!/usr/bin/env perl use common::sense; use WWW::Mechanize; use autodie; sub parse { my ($self) = shift; $self =~ s/\s+/\+/g; chomp $self; print Now -- . $self . \n\n; return (http://www.buscamp3.org/busca/; . $self); } sub gd { my ($self, $name) = @_; print $self . == . $name . \n\n; open my $fh,. $name . .mp3; my $m = WWW::Mechanize-new(); my $p = $m-get($self); $p = $p-decoded_content; $m-max_redirect(1); my @Links = $m-links(); my $w = 0; SWU: foreach my $link(@Links){ my @a = split (/, $link-url()); if ($a[1] =~ m/dl/gi){ print OK!\n; my $c = $m-get(http://www.buscamp3.org; . $link-url()); print $fh $c-decoded_content; close $fh; $w = 1; } last SWU if ($w == 1); } undef $m; } open IN, $ARGV[0] or die; foreach (IN){ print Search for: . $_ . \n; my $a = parse($_); gd($a, $_); print \n\n; } ___ 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://pacman.blog.br
Re: [Rio-pm] HTML::Parse
Web::Scraper requer conhecimento de XPath e/ou seletores CSS. No caso do link que você passou, URL do primeiro MP3 pode ser obtida via XPath: //table[@class='linhas_lista'][1]//tr/td[2]/a/@href De onde tirei isso? De uma extensão pro Chrome, chamada XPath Helper: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl Firefox tem (tinha?) um tal do XPather: https://addons.mozilla.org/en-US/firefox/addon/xpather/ Provando o que o Marcio disse: stas@Stanislaws-MacBook-Pro:~$ perl -CADS -MDDP -MURI -MWeb::Scraper -e 'p scraper{process q(//h1/strong),title=q(text);process q(//a[@href=~/\.mp3$/]),q(url[])=q(@href)}-scrape((URI-new(q( http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/))) x 2)' Printing in line 1 of -e: \ { title Baixar Thaeme e Thiago - Ai que do/ grátis, url [ [0] http://www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [1] http://www.buscamp3.org/dl/3473674c78687936326f/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [2] http://www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [3] http://www.buscamp3.org/dl/34734c6f727448494d71/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [4] http://www.buscamp3.org/dl/3473644e636d6f345245/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 ] } Sem ser one-liner maldito: #!/usr/bin/env perl use common::sense; use Data::Printer; use URI; use Web::Scraper; my $url = URI-new(' http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/'); p scraper { process q(//h1/strong), title = 'text'; process q(//a[@href=~/\\.mp3$/]), 'url[]' = '@href'; }-scrape($url, $url); ABS() 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Parece interessante mesmo, mas dificil de entender, principalmente quando é alguem que como eu não sabe nada de HTML. Realmente não entendi como faria tudo isso com o Web::Scraper. -- From: marciodesouzaferre...@gmail.com Date: Fri, 19 Oct 2012 21:14:53 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse estou cansado pra implementar, mas o Web::Scraper é tipo um néctar dos deuses, vc faz um crawler em 5' com ele, bem estilo Perl(que sai da frente e deixa você focar na solução) isso se o HTML não for um monstrengo =) []s, Marcio Ferreira @_marcioferreira (11) 8567-1482 skype: marcio.ferreir4 marciodesouzaferreira.blogspot.com 2012/10/19 Rafael Prenzier rafaelprenz...@gmail.com WWW::Mechanize ++ 2012/10/19 Ricardo Filipo ricardo_fil...@yahoo.com.br Eu gosto do HTML::TreeBuilder pois dá uma visão mais organizada do DOM. Veja um exemplo de uso: https://github.com/rfilipo/WebService-EBC/blob/master/lib/WebService/EBC/News.pm -- *De:* Aureliano Guedes guedes_1...@hotmail.com *Para:* Rio PM rio-pm@pm.org *Enviadas:* Sexta-feira, 19 de Outubro de 2012 13:22 *Assunto:* [Rio-pm] HTML::Parse Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ 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 -- Rafael Prenzier dos Santos | Engenheiro e Perl Monger (11) 5209-0847 www.prenzier.com http://gplus.to/prenzier http://www.facebook.com/rafaelprenzier http://twitter.com/prenzier/ http://www.orkut.com.br/Main#Profile?uid=13496291347057199080 http://cid-eacb613d80ce8dba.profile.live.com/ http://www.delicious.com/rafaelprenzier/ http://www.google.com/profiles/rafaelprenzier http://br.linkedin.com/pub/rafael-prenzier-dos-santos/29/6a2/478 http://www.youtube.com/prenzier http://www.diigo.com/user/prenzier http://www.shelfari.com/rprenzier/shelf http://flavors.me/prenzier http://www.diigo.com/user/prenzier ___ 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
Re: [Rio-pm] HTML::Parse
É a inspiração trazida pelo YAPC::Brasil, transbordando ;) ABS() 2012/10/20 marcio souza ferreira marciodesouzaferre...@gmail.com admiro alguns da lista, meia-noite de uma sexta-feira e a nerdaiada postando código e outros lendo K forever alone level master! Em 20 de outubro de 2012 00:13, Stanislaw Pusep creakt...@gmail.comescreveu: Web::Scraper requer conhecimento de XPath e/ou seletores CSS. No caso do link que você passou, URL do primeiro MP3 pode ser obtida via XPath: //table[@class='linhas_lista'][1]//tr/td[2]/a/@href De onde tirei isso? De uma extensão pro Chrome, chamada XPath Helper: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl Firefox tem (tinha?) um tal do XPather: https://addons.mozilla.org/en-US/firefox/addon/xpather/ Provando o que o Marcio disse: stas@Stanislaws-MacBook-Pro:~$ perl -CADS -MDDP -MURI -MWeb::Scraper -e 'p scraper{process q(//h1/strong),title=q(text);process q(//a[@href=~/\.mp3$/]),q(url[])=q(@href)}-scrape((URI-new(q( http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/))) x 2)' Printing in line 1 of -e: \ { title Baixar Thaeme e Thiago - Ai que do/ grátis, url [ [0] http://www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [1] http://www.buscamp3.org/dl/3473674c78687936326f/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [2] http://www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [3] http://www.buscamp3.org/dl/34734c6f727448494d71/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [4] http://www.buscamp3.org/dl/3473644e636d6f345245/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 ] } Sem ser one-liner maldito: #!/usr/bin/env perl use common::sense; use Data::Printer; use URI; use Web::Scraper; my $url = URI-new(' http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/'); p scraper { process q(//h1/strong), title = 'text'; process q(//a[@href=~/\\.mp3$/]), 'url[]' = '@href'; }-scrape($url, $url); ABS() 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Parece interessante mesmo, mas dificil de entender, principalmente quando é alguem que como eu não sabe nada de HTML. Realmente não entendi como faria tudo isso com o Web::Scraper. -- From: marciodesouzaferre...@gmail.com Date: Fri, 19 Oct 2012 21:14:53 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse estou cansado pra implementar, mas o Web::Scraper é tipo um néctar dos deuses, vc faz um crawler em 5' com ele, bem estilo Perl(que sai da frente e deixa você focar na solução) isso se o HTML não for um monstrengo =) []s, Marcio Ferreira @_marcioferreira (11) 8567-1482 skype: marcio.ferreir4 marciodesouzaferreira.blogspot.com 2012/10/19 Rafael Prenzier rafaelprenz...@gmail.com WWW::Mechanize ++ 2012/10/19 Ricardo Filipo ricardo_fil...@yahoo.com.br Eu gosto do HTML::TreeBuilder pois dá uma visão mais organizada do DOM. Veja um exemplo de uso: https://github.com/rfilipo/WebService-EBC/blob/master/lib/WebService/EBC/News.pm -- *De:* Aureliano Guedes guedes_1...@hotmail.com *Para:* Rio PM rio-pm@pm.org *Enviadas:* Sexta-feira, 19 de Outubro de 2012 13:22 *Assunto:* [Rio-pm] HTML::Parse Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ 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 -- Rafael Prenzier dos Santos | Engenheiro e Perl Monger (11) 5209-0847 www.prenzier.com http://gplus.to/prenzier http://www.facebook.com/rafaelprenzier http://twitter.com/prenzier/ http://www.orkut.com.br/Main#Profile?uid=13496291347057199080 http://cid-eacb613d80ce8dba.profile.live.com/ http://www.delicious.com/rafaelprenzier/ http://www.google.com/profiles/rafaelprenzier http://br.linkedin.com/pub/rafael-prenzier-dos-santos/29/6a2/478 http://www.youtube.com/prenzier http://www.diigo.com/user/prenzier http://www.shelfari.com/rprenzier/shelf http
[Rio-pm] Fwd: Senior Perl and Sysop opportunity with Betonmarkets.com
FWIW ABS() -- Forwarded message -- From: Jean-Yves Sireau j...@regent-markets.com Date: Mon, Oct 8, 2012 at 4:00 AM Subject: Senior Perl and Sysop opportunity with Betonmarkets.com To: s...@sysd.org Dear Stanislaw, Betonmarkets.com is currently recruiting for a Senior Perl Developer and a Senior Systems Engineer. Your email address is in our database of experienced Perl and Linux developers. Would you potentially have an interest in either position? This is a unique opportunity to join a multi-national team of talented developers, whilst gaining international experience in Malaysia's e-commerce hub of Cyberjaya. Our Group was founded in 1999, we have been operating in Malaysia since 2004. We have a technical team of diverse nationalities, including people working in Malaysia as well as commuters in different parts of the world. Our company provides IT and quant (financial mathematics) services to the betonmarkets.com financial platform. We use Perl and lots of Perl-related technologies extensively. We use other technologies too such as Apache, nginx, mod_perl, PostgreSQL, Javascript, Git, Puppet, Selenium, Jenkins, OpenVZ and AWS. We use Linux for all our infrastructure and desktops. Our daily routine involves maintaining the business operations as well as developing and deploying new solutions to make life easier for ourselves and our customers. We have a very casual work environment and culture, from dress code to the way we communicate and work. Our technical teams are people who are deeply concerned about the quality of their work and have a passion for it. We try to improve the way things are done constantly. We don't have a very big team so our staff have to deal with a variety of interesting tasks on a daily basis. Right now due to recent business expansion we have a vacancy for a Senior Perl Developer and a Senior Systems Engineer. As a part of our technical team, the successful candidates will be involved in our daily operations to make our infrastructure and products closer to what our customers need. Development is ongoing and we deploy regularly. We really care about testing and fault-proofing our code before it goes live so there’s a great deal of QA involved. We use virtualization extensively and rely on third party cloud services for parts of our operation. We are always on the lookout for new technologies that can add value to our portfolio of tools and services. You might be a good match for our company if: - You are knowledgeable and passionate about Linux and its nuts and bolts; - You are experienced with Perl. Take our word - there’s no escape from Perl here; - You are familiar with technologies such as Apache, nginx, Git, Debian packaging, monitoring solutions and are comfortable learning new ones when needed; - You can work as a part of a team of people as good as or better than you. - You can take and provide criticism and build on the experience to build better solutions in the future; - You are an independent thinker and can surprise yourself and the others with the new stuff you come up with; - As a developer, you are familiar with the concepts of software quality assurance and can test your own and other’s code against best-practice standards. So after what we expect from you, here's a list of the things you can expect from us: - You can expect a competitive compensation package, including health and other benefits; - A multi-national team of talented and passionate engineers; - Friendly and casual working environment; - Flexible working hours; - Canteen with refreshments for those times when you really need some; - Working from home option on certain occasions; - The opportunity to explore Malaysia, an exciting destination. - Work permit and relocation assistance. Please visit http://www.regentmarkets.com/careershttp://api.elasticemail.com/tracking/click?msgid=llhl4s-dupal422target=http%3a%2f%2fwww.regentmarkets.com%2fcareersfor further information about the company and the job opportunities. If you think you can be a good match for our company, drop us a line along with your resume. While not mandatory here's a list of the things we might be really interested in: - Projects you have been involved in; - If you have any public repositories on places such as github, please provide a link to them; - Contributions you might have made to open-source projects such as providing patches, new features,... - Anything that gives us a better picture of who you are and what you do. Please feel free to forward this email to any person who you think might fit the profile we are looking for. Many thanks and best regards, Jean-Yves Sireau ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Coro
Acho que não... Tinha o teor desse artigo: http://blog.64p.org/entry/20090630/1246324092 (repare na frase Coro is black magic.) :/ Mas creio que achei outro tipo de resposta para o que estava procurando, time-sliced multitasking using interval timers: # timeslice the given block sub timeslice() { use Time::HiRes (); Coro::on_enter { # on entering the thread, we set an VTALRM handler to cede $SIG{VTALRM} = sub { cede }; # and then start the interval timer Time::HiRes::setitimer Time::HiRes::ITIMER_VIRTUAL, 0.01, 0.01; }; Coro::on_leave { # on leaving the thread, we stop the interval timer again Time::HiRes::setitimer Time::HiRes::ITIMER_VIRTUAL, 0, 0; }; {+shift}; } # use like this: timeslice { # The following is an endless loop that would normally # monopolise the process. Since it runs in a timesliced # environment, it will regularly cede to other threads. while () { } }; ABS() 2012/8/15 breno br...@rio.pm.org Vc se refere a isso? https://metacpan.org/module/Coro::State#MODEL []s -b 2012/8/14 Stanislaw Pusep creakt...@gmail.com: Pessoas, eu lembro como se fosse ontem que em algum lugar da documentação (https://metacpan.org/module/Coro) havia uma referência descrevendo como o Coro foi implementado... Não estou conseguindo mais achar :( Alguém lembra/sabe? ABS() ___ 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] :engine::TRE
Só um parênteses: eu usaria o String::Approx[1] ou o re::engine::TRE[2] no lugar do String::Trigram[3], que é extremamente veloz porém voraz no quesito de RAM. Esses 3 módulos seriam apropriados para fuzzy match de uma string em lista de strings. Já o String::Similarity[4] é muito bom para comparar 2 strings, mas não é a coisa mais eficiente para aplicar a listas. Frequentemente uso o Text::Fingerprint[5] como versão light do Text::Soundex[6] (com elementos de String::Trigram :P). Recomendo o artigo do Blabos[7] e de um computeiro russo[8] (outro russo) a todos que trabalharem com strings imprecisas :) [1] https://metacpan.org/module/String::Approx [2] https://github.com/avar/re-engine-tre [3] https://metacpan.org/module/String::Trigram [4] https://metacpan.org/module/String::Similarity [5] https://metacpan.org/module/Text::Fingerprint [6] https://metacpan.org/module/Text::Soundex [7] http://blog.blabos.org/2008/12/faxina-depois-da-festa/ [8] http://ntz-develop.blogspot.com.br/2011/03/fuzzy-string-search.html ABS() 2012/7/2 ulis...@ibiz.com.br usamos por aqui use Text::DoubleMetaphone qw( double_metaphone ); # casamento fonetico use String::Approx 'adist'; *From:* Stanislaw Pusep creakt...@gmail.com *Sent:* Monday, July 02, 2012 9:24 AM *To:* Perl Mongers Rio de Janeiro rio-pm@pm.org *Cc:* saopaulo...@mail.pm.org *Subject:* Re: [Rio-pm] :engine::TRE Bom dia Thiago! Obrigado pela dica, não conhecia o String::Approx. Pelo meu rápido RTFS, usa o mesmo algoritmo que o re::engine::TRE ( https://en.wikipedia.org/wiki/Bitap). Também fiz a coisa mais óbvia, que devia ter feito antes de mandar o email para a lista: olhei no CPAN Testers, e percebi que o módulo em questão só funcionava até Perl v5.10. Entrei em contato com o autor, e ele confirmou que as entranhas do Perl tornaram-se incompatíveis a partir do v5.12. Verei o que faço a respeito; o módulo me pareceu deveras útil. ABS() 2012/6/29 Thiago Glauco thiagogla...@ticursos.net Eu uso use String::Approx 'amatch'; print if amatch(foobar); my @matches = amatch(xyzzy, @inputs); my @catches = amatch(plugh, ['2'], @inputs); Em Qui, 2012-06-28 às 18:20 -0300, Stanislaw Pusep escreveu: Um dos exemplos de aplicação prática dela é o utilitário 'agrep' (approximate grep). ___ 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] :engine::TRE
Perlssoal, esses dias me deparei com a biblioteca TRE ( http://laurikari.net/tre/about/): TRE is a lightweight, robust, and efficient POSIX compliant regexp matching library with some exciting features such as approximate (fuzzy) matching. Um dos exemplos de aplicação prática dela é o utilitário 'agrep' (approximate grep). Obviamente, tentei compilar a interface para Perl ( https://github.com/avar/re-engine-tre). Porém esse módulo não está no CPAN, e me parece bastante desatualizado. De fato, não compila. retorna erros como: cc -c -Itre -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\0.04\ -DXS_VERSION=\0.04\ -fPIC -I/home/stas/perl5/perlbrew/perls/perl-5.14.2/lib/5.14.2/x86_64-linux/CORE TRE.c In file included from TRE.xs:7:0: TRE.h:22:5: warning: initialization from incompatible pointer type [enabled by default] TRE.h:22:5: warning: (near initialization for ‘engine_tre.comp’) [enabled by default] TRE.xs: In function ‘TRE_comp’: TRE.xs:42:7: error: ‘REGEXP’ has no member named ‘refcnt’ TRE.xs:43:7: error: ‘REGEXP’ has no member named ‘extflags’ TRE.xs:44:7: error: ‘REGEXP’ has no member named ‘engine’ TRE.xs:47:7: error: ‘REGEXP’ has no member named ‘prelen’ ... Analisando outros módulos do namespace re::engine::* (RE2, PCRE, Plan9), percebi que a struct REGEXP em questão é recorrente. Aliás, re::engine::Plan9 não compila por causa do mesmo erro. E, infelizmente, o nome REGEXP é ambíguo demais para googlar :( Alguém faz alguma ideia do que esteja acontecendo? ABS() ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] MakeFile
módulos (como our $VERSION) e da documentação - então não esqueça de incluir os campos pertinentes na documentação (sempre uma boa prática!) ou terá que inclui-los explicitamente no Makefile.PL. Digamos que os módulos da sua distribuição dependam dos seguintes módulos EXTERNOS: File::Spec e Carp. Digamos ainda que, embora não seja uma dependência direta, se o usuário tiver instalado o módulo Data::Printer o seu programa consegue fazer alguma outra coisa bacana, então embora não seja obrigatório vc gostaria de recomendar o Data::Printer. Adicionar essas dependências no Makefile.PL é simples, ele fica assim: ---8--- use inc::Module::Install; name'Minha-Dist'; all_from 'lib/MeuModulo.pm'; requires 'File::Spec' = 0; requires 'Carp' = 0; recommends 'Data::Printer' = 0.3; WriteAll; ---8--- O número depois da = indica a versão mínima do módulo, usamos zero (0) para indicar que qualquer versão serve. Com isso acho que vc já tem o suficiente. Não esqueça de criar um diretório t na raiz da sua distribuição para colocar os testes de seus módulos!! Mais sobre o M:I vc encontra na documentação (https://metacpan.org/module/Module::Install) Obs: quando criamos um novo módulo, há alguns boilerplates que criam as estruturas e documentações básicas para vc. Eu particularmente gosto do Module::Starter, com o plugin Module::Starter::PBP (mas eu modifico os templates em ~/.module-starter/PBP para conter o esqueleto que uso). Assim, basta escrever na linha de comando: $ module-starter --module=Meu::Novo::Modulo e ele cria tudo para mim. Quando vc estiver acostumado a criar suas distribuições e entender o processo, vai começar a ficar preguiçoso. Aí sim, dê uma olhada no Dist::Zilla e veja se ele é para vc =) []s -b 2012/6/2 Stanislaw Pusep creakt...@gmail.com: A resposta é: Dist::Zilla. Pode parecer chatinho de aprender, mas, uma vez sabendo o básico, criar módulo com Makefile.PL completo e suíte de testes é dois palitos! Recomendo: http://sao-paulo.pm.org/artigo/2011/OhnoItsDistZilla http://sao-paulo.pm.org/equinocio/2011/set/2 ABS() 2012/6/2 Aureliano Guedes guedes_1...@hotmail.com Ola, Monges. Eu estou tentando gerar um MakeFile.PL mas estou com um problema. Eu andei lendo, inclusive alguns materiais do Hernan Lopes mas ficou uma pergunta. Quando eu tenho varios modulos que na verdade sao dependencia de outro modulo. exemplo: MeuModulo.pm, MeuModulo/Modulo1.pm, MeuModulo/Modulo2.pm. Como faco? Nao achei nenhuma opcao no ExtUtils::MakeMaker. Desde ja, obrigado. Att, Aureliano Guedes PS: Desculpem a falta de acentos, o teclado esta desconfigurado. ___ 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 -- Alexei RUSSOZ Znamensky | russoz EM gmail com | http://russoz.org GPG fingerprint = 42AB E78C B83A AE31 7D27 1CF3 C66F B5C7 71CA 9F3C http://www.flickr.com/photos/alexeiz | http://github.com/russoz I don't know... fly casual! -- Han Solo ___ 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] Tratamento de dados para CSV
Vários :) http://sao-paulo.pm.org/artigo/2011/CSVENTREPIPEEDBMS ABS() 2012/6/1 Manoel Domingues Junior manoel.domingues.jun...@gmail.com Olá pessoal, Estou com um dificuldade em encontrar um módulo no cpan que me ajude a fazer a geração de uma matriz... Eu obtenho os dados de um software no seguinte formato: Manoel;Pedro João;Pedro Pedro;Manoel Esses dados eu gostaria de colocar em uma matriz do tipo: X; Pedro;Manoel; Manoel; 1;; João;1;; Pedro;;1; Alguém conhece algum módulo que me permita fazer isso? Abraços -- -- Manoel Domingues Junior Coletar dados é o primeiro passo para a sabedoria, mas compartilhar dados é o primeiro passo para a comunidade. IBM - Prodigy Linux ___ 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] Tratamento de dados para CSV
perl -F\; -anE'chomp$F[1];++$m{$F[0]}{$F[1]}}{say join;,X=keys%m;say join;,$_,@{$m{$_}}{keys%m}for keys%m' tabela.txt ABS() 2012/6/1 Fernando Oliveira fernandocor...@gmail.com Menor: perl -lnE'/;/;$l{$'}//=$i++;$c{$`}=[];$c{$`}[$l{$'}]=1}{$,=;;say,sort{$l{$a}=$l{$b}}keys%l;say$_,@{$c{$_}}[0..keys%l]for keys%c' tabela.txt Just another Perl Hacker, Fernando (SmokeMachine) Em 1 de junho de 2012 12:34, Fernando Oliveira fernandocor...@gmail.comescreveu: s/exita/exista/ Just another Perl Hacker, Fernando (SmokeMachine) Em 1 de junho de 2012 12:32, Fernando Oliveira fernandocor...@gmail.comescreveu: Assumindo q exita o arquivo: tabela.txt contendo: Manoel;Pedro Joao;Pedro Pedro;Manoel GOLF?! minha 1a tacada: perl -lnE'/;/;$l{$'}//=$i++;$c{$`}=[];$c{$`}[$l{$'}]=1}{say;,join(;,sort{$l{$a}=$l{$b}}keys%l);say join;,$_,@{$c{$_}}[0..keys%l]for keys%c' tabela.txt Just another Perl Hacker, Fernando (SmokeMachine) Em 1 de junho de 2012 12:00, Stanislaw Pusep creakt...@gmail.comescreveu: @breno, infelizmente, se for um CSV gerado por algumas ferramentas de escritório cujo nome não quero citar nessa lista, expressão regular não basta, já dizia o brian d foy: http://www.effectiveperlprogramming.com/blog/1386 @cleysinho, bacana o Class:CSV, pelo que entendi, é uma interface user-friendly para o Text::CSV que, apesar de funcionar muito bem, é bastante prolixo. Um módulo que tentei usar recentemente é o Parse::CSV, porém ele, como já diz o nome, apenas lê o CSV (também via Text::CSV). ABS() 2012/6/1 breno br...@rio.pm.org 2012/6/1 Manoel Domingues Junior manoel.domingues.jun...@gmail.com: Olá pessoal, Estou com um dificuldade em encontrar um módulo no cpan que me ajude a fazer a geração de uma matriz... Eu obtenho os dados de um software no seguinte formato: Manoel;Pedro João;Pedro Pedro;Manoel Esses dados eu gostaria de colocar em uma matriz do tipo: X; Pedro;Manoel; Manoel; 1;; João;1;; Pedro;;1; Alguém conhece algum módulo que me permita fazer isso? Manoel, desculpa a pergunta, mas isso o quê? Pode ser pq ainda não acordei direito, mas não entendi o que vc está fazendo... Supondo que vc tem uma lista na forma: my @linhas = ( 'Manoel;Pedro', 'João;Pedro', 'Pedro;Manoel', ); você pode gerar uma nova lista fazendo algo como: my @nova = (); foreach my $linha (@linhas) { my @campos = split /\s*;\s*/ = $linha; # modifique @campos como bem entender... push @nova, join ';' = @campos; } é isso? []s -b ___ 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] Tratamento de dados para CSV
Mas é claro! perl -F\; -lanE'++$m{$F[0]}{$F[1]}}{$,=;;say X=keys%m;say $_,@{$m{$_}}{keys%m}for keys%m' tabela.txt ABS() On Fri, Jun 1, 2012 at 1:03 PM, Fernando Oliveira fernandocor...@gmail.comwrote: perl -F\; -lanE'++$m{$F[0]}{$F[1]}}{say join;,X=keys%m;say join;,$_,@{$m{$_}}{keys%m}for keys%m' tabela.txt Just another Perl Hacker, Fernando (SmokeMachine) Em 1 de junho de 2012 13:00, Stanislaw Pusep creakt...@gmail.comescreveu: perl -F\; -anE'chomp$F[1];++$m{$F[0]}{$F[1]}}{say join;,X=keys%m;say join;,$_,@{$m{$_}}{keys%m}for keys%m' tabela.txt ___ 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] Tratamento de dados para CSV
menor ainda ;) perl -F\; -anE'chomp$F[1];++$m{$F[0]}{$F[1]}}{$,=;;say X=keys%m;say $_,@{$m{$_}}{keys%m}for keys%m' tabela.txt ABS() 2012/6/1 Fernando Oliveira fernandocor...@gmail.com menor: perl -lnE'/;/;$l{$'}//=$i++;$c{$`}=[];$c{$`}[$l{$'}]=1}{$,=;;say,keys%l;say$_,@{$c{$_}}[values%l]for keys%c' tabela.txt Just another Perl Hacker, Fernando (SmokeMachine) Em 1 de junho de 2012 12:56, Fernando Oliveira fernandocor...@gmail.comescreveu: Menor: perl -lnE'/;/;$l{$'}//=$i++;$c{$`}=[];$c{$`}[$l{$'}]=1}{$,=;;say,sort{$l{$a}=$l{$b}}keys%l;say$_,@{$c{$_}}[0..keys%l]for keys%c' tabela.txt Just another Perl Hacker, Fernando (SmokeMachine) Em 1 de junho de 2012 12:34, Fernando Oliveira fernandocor...@gmail.comescreveu: s/exita/exista/ Just another Perl Hacker, Fernando (SmokeMachine) Em 1 de junho de 2012 12:32, Fernando Oliveira fernandocor...@gmail.com escreveu: Assumindo q exita o arquivo: tabela.txt contendo: Manoel;Pedro Joao;Pedro Pedro;Manoel GOLF?! minha 1a tacada: perl -lnE'/;/;$l{$'}//=$i++;$c{$`}=[];$c{$`}[$l{$'}]=1}{say;,join(;,sort{$l{$a}=$l{$b}}keys%l);say join;,$_,@{$c{$_}}[0..keys%l]for keys%c' tabela.txt Just another Perl Hacker, Fernando (SmokeMachine) Em 1 de junho de 2012 12:00, Stanislaw Pusep creakt...@gmail.comescreveu: @breno, infelizmente, se for um CSV gerado por algumas ferramentas de escritório cujo nome não quero citar nessa lista, expressão regular não basta, já dizia o brian d foy: http://www.effectiveperlprogramming.com/blog/1386 @cleysinho, bacana o Class:CSV, pelo que entendi, é uma interface user-friendly para o Text::CSV que, apesar de funcionar muito bem, é bastante prolixo. Um módulo que tentei usar recentemente é o Parse::CSV, porém ele, como já diz o nome, apenas lê o CSV (também via Text::CSV). ABS() 2012/6/1 breno br...@rio.pm.org 2012/6/1 Manoel Domingues Junior manoel.domingues.jun...@gmail.com: Olá pessoal, Estou com um dificuldade em encontrar um módulo no cpan que me ajude a fazer a geração de uma matriz... Eu obtenho os dados de um software no seguinte formato: Manoel;Pedro João;Pedro Pedro;Manoel Esses dados eu gostaria de colocar em uma matriz do tipo: X; Pedro;Manoel; Manoel; 1;; João;1;; Pedro;;1; Alguém conhece algum módulo que me permita fazer isso? Manoel, desculpa a pergunta, mas isso o quê? Pode ser pq ainda não acordei direito, mas não entendi o que vc está fazendo... Supondo que vc tem uma lista na forma: my @linhas = ( 'Manoel;Pedro', 'João;Pedro', 'Pedro;Manoel', ); você pode gerar uma nova lista fazendo algo como: my @nova = (); foreach my $linha (@linhas) { my @campos = split /\s*;\s*/ = $linha; # modifique @campos como bem entender... push @nova, join ';' = @campos; } é isso? []s -b ___ 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] Tratamento de dados para CSV
C:\ :( ABS() On Fri, Jun 1, 2012 at 1:23 PM, Fernando Oliveira fernandocor...@gmail.comwrote: C:\perl -lnE/;/;$,=$;++$m{$`}{$'}}{say X=@a=keys%m;say$_,@{$m{$_}}{@a}for@a tabela.txt X;Joao;Pedro;Manoel Joao;;1; Pedro;;;1 Manoel;;1; Just another Perl Hacker, Fernando (SmokeMachine) 2012/6/1 breno br...@rio.pm.org perl -F\; -lanE'++$m{$F[0]}{$F[1]}}{$,=;;say X=@a=keys%m;say$_,@{$m{$_}}{@a}for@a' tabela.txt ___ 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] Tratamento de dados para CSV
Em bash, pelo menos, teria que rodar como: perl -MEnglish -lnE'$m{$`}{$POSTMATCH}=/;/;$,=$}{say X=@a=keys%m;say$_,@{$m{$_}}{@a}for@a' tabela.txt ABS() On Fri, Jun 1, 2012 at 1:31 PM, Fernando Oliveira fernandocor...@gmail.comwrote: C:\perl -lnE$m{$`}{$'}=/;/;$,=$}{say X=@a=keys%m;say$_,@{$m{$_}}{@a}for@a tabela.txt Just another Perl Hacker, Fernando (SmokeMachine) 2012/6/1 Fernando Oliveira fernandocor...@gmail.com bom... aqui no windows funfa... :P no windows eu to usando o no -e... Just another Perl Hacker, Fernando (SmokeMachine) 2012/6/1 breno br...@rio.pm.org Ha! Alguém consegue usar $' na shell sem escapar? On Fri, Jun 1, 2012 at 1:24 PM, Stanislaw Pusep creakt...@gmail.comwrote: C:\ :( ABS() On Fri, Jun 1, 2012 at 1:23 PM, Fernando Oliveira fernandocor...@gmail.com wrote: C:\perl -lnE/;/;$,=$;++$m{$`}{$'}}{say X=@a=keys%m;say$_,@{$m{$_}}{@a}for@a tabela.txt X;Joao;Pedro;Manoel Joao;;1; Pedro;;;1 Manoel;;1; Just another Perl Hacker, Fernando (SmokeMachine) 2012/6/1 breno br...@rio.pm.org perl -F\; -lanE'++$m{$F[0]}{$F[1]}}{$,=;;say X=@a=keys%m;say$_,@{$m{$_}}{@a}for@a' tabela.txt ___ 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 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] problemas com modulo
use Moose; ABS() 2012/5/31 Bruno Buss bruno.b...@gmail.com: @Aureliano: Cara, de boa só vou fazer um comentário em relação ao seu problema... Esse problema que você teve no seu código, que o Gabriel apontou rapidamente, você já tinha cometido antes em outra thread, eu tinha escrito um e-mail relativamente longo explicando porque o erro acontecia, inclusive com um código em Perl anexo focando apenas no erro, e dizendo como fazer de forma correta... Não sei qual é exatamente a sua metodologia de aprendizagem, mas você vai ficar cometendo os mesmos erros de novo e de novo e de novo e perguntando a mesma coisa? Só para referência, a outra thread é a [Rio-pm] Problemas com rawsocket. [ ]'s 2012/5/31 Gabriel Vieira gabriel.vie...@gmail.com Utilize ini() e end() no lugar de ini e end. 2012/5/31 Aureliano Guedes guedes_1...@hotmail.com: Ola monges, Estou com um problema estranho. Estou desenvolvendo um modulo, apenas para estudo de desenvolvimento de modulos. É um scanner de portas, onde entra com o link ou IP dai você escolhe a faixa de portas, exemplo de 60 a 100 caso contrario, por default ele scaneia de 1 a 5. Ai que mora o problema, por algum motivo mesmo eu configurando para scanear de 60 a 100 ele continua scaneando pelas opções de defaut. Eu não consegui achar onde errei, por isso venho pedir que alguem de uma olhadinha e me indique o erro. Eis aqui o codigo - http://pastebin.com/vkqjksvQ Desde já grato. Att, Aureliano Guedes. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Gabriel Vieira ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Bruno C. Buss http://www.brunobuss.net ___ 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] variável $^H no Perl 5.16
Bom dia, senhores. A referência oficial ao $^H, no perlvar: WARNING: This variable is strictly for internal use only. Its availability, behavior, and contents are subject to change without notice. Mais claro, impossível. Ainda assim, estou tentando entender o que mudou de lá pra cá: $ perl -e 'BEGIN { $^H{feature_say} = 1; }; say $^V' v5.14.2 $ perl -e 'BEGIN { $^H{feature_say} = 1; }; say $^V' Can't locate object method say via package version at -e line 1. Aparentemente, não funciona mais... Mas não é bem assim. Fuçando um pouco, descobri que precisa do tal de HINT_FEATURE_MASK, introduzido em 5.15.7 ( https://metacpan.org/diff/file/?target=BINGOS/perl-5.15.7/lib/feature.pmsource=FLORA/perl-5.14.2/lib/feature.pm ) perldelta refere à definição do valor de HINT_FEATURE_MASK em perl.h: #define HINT_FEATURE_MASK 0x1c00 /* 3 bits for feature bundles */ Então, para consertar o código, basta fazer: $ perl -e 'BEGIN { $^H |= 0x1c00; $^H{feature_say} = 1; }; say $^V' v5.16.0 Infelizmente, para mim isso é black magic. O que exatamente esse valor faz? Por que não precisava dele antes e agora precisa? ABS() ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] variável $^H no Perl 5.16
É exatamente isso que eu queria saber!!! Valeu! ++breno :D ABS() 2012/5/31 breno br...@rio.pm.org 2012/5/31 Aureliano Guedes guedes_1...@hotmail.com: Infelizmente isso foi como andar pra traz, na minha opinião. Eu não sabia disso, alias ainda estou preso no perl 5.14. Por quê? Como o Stan claramente apontou, é uma variável SOMENTE para uso interno. No código demonstrado ele quebrou encapsulamento 2 vezes (uma ao mexer no $^H e outra ao futucar no namespace dos outros no %^H - e escrevendo, ainda?! Stan malvado! Stan malvado!). A verdade é que ele sabia disso e por isso deixou claro que só queria entender o que estava acontecendo, e não reclamando da mudança. Se você não modifica o fonte do perl ou depura internas do feature.pm, não deveria estar usando nada disso. Se, pelo contrário, você está usando a API pública (que por sinal não só é mais clara como tem menos caracteres envolvidos): use feature 'say'; ou use feature ':5.10'; ou ainda: use v5.14; tudo continua funcionando normalmente. Caso haja algum motivo para essa mudança, quando alguem descobrir me explique. O Fernando tem razão e isso está relacionado com a nova feature (essa sim pública) do 5.16, que ativa somente as features de uma determinada versão. Mais especificamente, ao fato de que agora escrever use VERSAO carrega as features daquela versão sem precisar carregar o feature.pm (ou o strict.pm, no caso de = 5.14) Aos mais curiosos que quiserem continuar lendo, cuidado: algumas entranhas serão expostas :) Antes de começar vale lembrar que estamos falando de duas variáveis diferentes, $^H (que contém dicas para o interpretador na forma de flags) e %^H (para implementação de pragmas em escopo léxico, armazenando valores de estado na optree). A mudança aconteceu no final do ano passado. A idéia, até onde entendi, é que o compilador agora reserva 3 bits no $^H para definição dos chamados feature bundles. Ou seja, se eu tenho use v5.16 ele vai passar a dica que, dentro daquele escopo léxico, somente determinadas features estarão ativas. Quais são ativadas e quais não são é o que fica nas chaves (privadas) 'feature_X' dentro do %^H. Agora, portanto, o $^H precisa indicar ao interpretador se ele deve usar as features definidas no %^H ou não. Se você não define, ele entende como se não estivesse ativando feature alguma, independente do que está no %^H. O valor é 0x1c00 pq ativa 3 bits sequenciais em binário (11100), usados para definir a máscara padrão. Note, por exemplo, que se você colocar em $^H um outro valor que também ative a flag de features, elas funcionarão normalmente via %^H: perl -e 'BEGIN { $^H |= 0x1e2aff0d; $^H{feature_say} = 1; }; say $^V' v5.16.0 Mais especificamente, se você definir um bundle padrão diferente da máscara, ele vai escolher o bundle conforme o valor posicional do número deslocado 26 bits para a direita (o tamanho da máscara) em @feature::hint_bundles, que hoje vale qw( default 5.10 5.11 5.15 ). Ou seja, podemos fazer: perl -e 'BEGIN { $^H |= 0x0800; $^H{feature_say} = 1; }; say $^V' v5.16.0 Já que 0x0800 (hexa) é 1000 (binário) e isso 26 vale 10 (2, em decimal), indicando que vai usar as features do $hint_bundles[2], ou seja, 5.11. Analogamente, não ter a flag definida é o mesmo que definir $^H{feature_say} com a máscara 'default' (000) ativa. Na prática, o feature.h (também gerado pelo regen/feature.pl) usa essas flags para definir quais features estão ativas em um determinado momento (macros FEATURE_BUNDLE_CUSTOM e CURRENT_FEATURE_BUNDLE). Se você não usar um feature bundle, ele assume o default, que no momento é ativar apenas a feature 'array_base' (independente do que esteja no %^H). Outra interessante consequência dessas modificações é permitir que uma nova versão do perl desative determinada feature. Por exemplo, escrever use v5.16 desativa a variável $[ (disponível em versões anteriores). Caso realmente precise usá-la, basta fazer use v5.16; use feature qw(array_base); Quem quiser ver as modificações, estão em torno do commit 23a52d6b1d1. Os arquivos pertinentes - lib/feature.pm e feature.h - são gerados pelo regen/feature.pl, chamado via regen.pl. Espero ter ajudado :) []s -b ___ 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] Unzip
++Blabos :D Mantovani, aquele seu código de desenhar um X usando letras J também não ficou oitava maravilha, não, r... ABS() 2012/5/29 Blabos de Blebe bla...@gmail.com Você usa Perl como se tivesse usando papel higiênico, e eu preciso amadurecer Ué cara, cada um tem o direito de passar o que quiser na própria bunda. A gente tá aqui é pra dizer que não é pra enfiar na nossa cara depois. 2012/5/29 Daniel Mantovani daniel.oliveira.mantov...@gmail.com: Você usa Perl como se tivesse usando papel higiênico, e eu preciso amadurecer. Da para perceber o quão maduro você é. Para de se achar, e aprende alguma coisa. []'s -- Software Engineer Just Another Perl Hacker Daniel Mantovani +5511 8538-9897 XOXO On May 29, 2012, at 11:47 AM, ulis...@ibiz.com.br wrote: Mantovani, menos. Amadureça. From: Daniel Mantovani Sent: Tuesday, May 29, 2012 11:04 AM To: ulis...@ibiz.com.br ; Perl Mongers Rio de Janeiro Subject: Re: [Rio-pm] Unzip Ulisses, Se for para fazer porcaria, use Shell Script. -- Software Engineer Just Another Perl Hacker Daniel Mantovani +5511 8538-9897 XOXO On May 29, 2012, at 10:14 AM, ulis...@ibiz.com.br wrote: jeito ‘dirty’ que funciona em Linux e MS$ |(se vc baixar o unzip for windows na máquina). se vc puder dar um exec no comando unzip, sugiro $cmd = unzip -o \$in\ -d $path_temp_zip; # unzipa $in no subdir temporario, adicao de -o para overwrite sem perguntar nada para usuario vc pode colocar opções para extrair apenas os arquivos que vc deseja extrair: opções –x -C $cmd_msg = qx/$cmd 21/; # captura STDOUT e STDERR $cmd_status = $?; # memoriza status de retorno do unzip if ($cmd_status) { ($ok, $sev, $msg) = (0,1,Erro ao executar '$cmd': $cmd_status: $cmd_msg); } else { navegue por $path_temp_zip para tratar os arquivos do seu interesse, ja filtrados pelas opções que vc deve adicionar no $cmd unzip acima } From: Aureliano Guedes Sent: Tuesday, May 29, 2012 8:19 AM To: Rio PM Subject: Re: [Rio-pm] Unzip O que tentei fazer foi isso: http://pastebin.com/45tHKZur Mas ainda não deu certo. Date: Mon, 28 May 2012 23:08:44 -0300 From: ole@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] Unzip Walking through a zipfile, com certeza te providencia o nomes dos arquivos. Afinal,.a extensão não importante, faz parte do nome... 0le Send via Android Em 28/05/2012 22:48, Aureliano Guedes guedes_1...@hotmail.com escreveu: Ok. Entendo ja li a documentação, inclusive ja pesquisei codigo pronto ja internet. Mas ainda sim não consegui usa-lo, pois especificando a extenção do arquivo fica facil, o output saira com a extenção desejada, mesmo que você coloque *.cmj (casa da mãe joana). Minha duvida é, descompactar 800 arquivos *.zip onde o conteudo pode ser arquivos das mais diversas extenções, as vezes mais de um arquivo, as vezes uma pasta contendo outros arquivos, acontece que sempre sai um arquivo vazio como ja falei. Então, como fazer? From: gabi...@gmail.com Date: Mon, 28 May 2012 22:33:55 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] Unzip On May 28, 2012, at 10:18 PM, Aureliano Guedes wrote: Qual seria minh alternativa?? Ao invés do IO::Uncompress::Unzip? Hmmm.. que tal o IO::Uncompress::Unzip? https://metacpan.org/module/IO::Uncompress::Unzip#Walking-through-a-zip-file :D ___ 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 ___ 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] Ajuda com configuração do CPAN
Seria o que o local::lib faz? http://sysd.org/perl-e-modulos-na-home/ ABS() 2012/5/10 Guilherme Alves guilhermeareal+ri...@gmail.com Prezados, A minha dúvida é básica, mas não estou achando uma boa solução.. Gostaria de configurar o cpan em uma linha.. passando todas as opçoes como se estivesse configurando aquele passo a passo inicial que todos conhecem. Gostaria de setar umas preferências e um local para ele puxar os módulos.. tipo um mirror local. A minha idéia é automatizar para várias máquinas e evitar aquelas perguntas de mirror, onde está tal binário, se deseja isso ou aquilo. Desde já agradeço a ajuda, Att, -- Guilherme Alves Redes, Sites e Sistemas(RSS) - GRIS-DCC-UFRJ Grupo de Resposta a Incidentes de Segurança Conheça o GRIS em www.gris.dcc.ufrj.br ___ 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] Ajuda com configuração do CPAN
Ou talvez o CPANPLUS: https://metacpan.org/module/CPANPLUS :) ABS() 2012/5/10 Gabriel Vieira gabriel.vie...@gmail.com Dá uma olhada no App::cpanminus pode ser que você mude a sua estratégia. 2012/5/10 Guilherme Alves guilhermeareal+ri...@gmail.com Prezados, A minha dúvida é básica, mas não estou achando uma boa solução.. Gostaria de configurar o cpan em uma linha.. passando todas as opçoes como se estivesse configurando aquele passo a passo inicial que todos conhecem. Gostaria de setar umas preferências e um local para ele puxar os módulos.. tipo um mirror local. A minha idéia é automatizar para várias máquinas e evitar aquelas perguntas de mirror, onde está tal binário, se deseja isso ou aquilo. Desde já agradeço a ajuda, Att, -- Guilherme Alves Redes, Sites e Sistemas(RSS) - GRIS-DCC-UFRJ Grupo de Resposta a Incidentes de Segurança Conheça o GRIS em www.gris.dcc.ufrj.br ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Gabriel Vieira ___ 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] Fwd: Booking.com is hiring
Com vocês, o relato de alguém que tentou sorte na Booking.com: http://blogs.perl.org/users/bookingemployee/2012/03/truth-about-bookingcom.html Resumo, no final: Why to work here? If you want to move to Europe, they will pay. Amsterdam is very nice. You might get a change to train for management. People are very nice and I like my colleagues. Why not to work here? If you care about technology and doing a good job, do not work here. If you like to write tests, do not work here. If you try to change things, they will talk to you about your attitude. If you do not stop, you will not have a job. ABS() On Wed, Apr 25, 2012 at 16:06, Thiago Rondon thi...@aware.com.br wrote: -- Forwarded message -- From: Jonas Alves jonas.al...@gmail.com Date: Wed, Apr 25, 2012 at 3:30 PM Subject: Booking.com is hiring To: Lisbon Perl Mongers p...@lisbon.pm.org A booking.com quer contratar 30 a 40 programadores de Perl este ano. Há interessados por aqui? :) http://www.booking.com/jobs.html?st=jobscategory=IT%20Design%20%26%20Development -- Jonas ___ 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] Perl em desuso??
Eu entendo perfeitamente que somos seres sociais e o controle de raiva é necessário... Mas puxa: os programadores Ruby de agências de publicidade estão fazendo com o mercado de TI o mesmo que os sobrinhos dos diretores fizeram do mercado de uébidizáine (tradução: estão nivelando por baixo). Não que não existam bons programadores Ruby. Não que não existam sobrinhos talentosos. Todavia, quem sempre vai elogiar os seus projetinhos e ser tolerante é a mamãe e a titia. Eu prefiro falar o que penso na caruda do que torcer para que saia uma borboleta dessa larva. (in)felizmente, não sou o único: http://developers.slashdot.org/comments.pl?sid=2787049cid=39687659 ABS() On Mon, Apr 23, 2012 at 14:35, breno br...@rio.pm.org wrote: Eu ia comentar, mas o Bruno falou absolutamente tudo que eu tinha pra dizer. bbuss++ Aureliano, leia com muita calma e atenção a resposta dele. Depois, leia de novo, vai te fazer bem. Acho bacana que vc esteja tão feliz com Perl (a maioria de nós está!) mas linguagens são ferramentas e devemos usar a que melhor se adeque ao seu problema e sua forma de pensar. Perl não está em desuso, apenas passou a dividir o mercado de linguagens dinâmicas com alternativas que não existiam quando a linguagem foi criada. Se você quiser algo mais específico, como sites/sistemas/empresas que usam Perl, ou sobre o crescimento da comunidade, sinta-se à vontade para perguntar, mas note que é uma pergunta diferente. Se você quer defender Perl, evite menosprezar outras linguagens. Fanatismo não se sustenta e o seu argumento de que Ruby é uma linguagenzinha, na minha opinião, criado para viciados em RPG geralmente virgens., se é que posso chamar de argumento, foi pobre, infeliz, ofensivo, desnecessário e errado. Novamente, como o Bruno disse: Para defender Perl não é preciso menosprezar outras linguagens e seus usuários... deixe isso para as pessoas e comunidades sem recursos ;) []s -b On Mon, Apr 23, 2012 at 12:40 PM, Bruno Buss bruno.b...@gmail.com wrote: 2012/4/23 Aureliano Guedes guedes_1...@hotmail.com Monges, Bom dia. Gostaria de levantar uma questão para discutirmos e vermos a opinião de cada um... Perl esta em desuso?? Não. Podem encerrar a thread? Ouvi esse comentário (infeliz, na minha opinião) e ainda tive que ouvir mais (Ruby e Python estão tomando lugar). Afff... Mas Ruby e Python estão tomando lugar, estão tomando uma fatia do que antes era apenas Perl. São ferramentas alternativas ao Perl e cada um escolhe a ferramente que melhor lhe agrada e que torna seu trabalho mais agradável e eficiente. O fato é, quem gosta de POO realmente vai preferir Python, pois poucos sabem que Perl tem suporte a OO, inclusive eu criei vario objetos para mostrar como podemos usar Perl como se fosse POO. Mas, o serio problema que os códigos Python tem com indentação é triste, alem de que tratar tudo como objeto é um saco. Indentação do Python é triste? Apesar de algo que restringe um pouco - quase nada emho - como o programador utiliza a linguagem... eu acho uma coisa legal. Sério mesmo, é muito mais fácil alguém que ta aprendendo a programar fazer algo muito mais macarrônico em Perl ou C do que em Python. Agora, se isso define se uma linguagem é melhor que a outra? Não acredito... Ruby é uma linguagenzinha, na minha opinião, criado para viciados em RPG geralmente virgens. De fato, com argumentos fortes e contundentes desse tipo, você está fazendo um bem enorme a comunidade Perl. Fica uma dica: Para defender Perl não é preciso menosprezar outras linguagens e seus usuários... deixe isso para as pessoas e comunidades sem recursos ;) Fiz o seguinte script abaixo http://pastebin.com/eJEC0Kvt para testar os dois seguintes http://pastebin.com/ytUiweKe http://pastebin.com/0BfyiZgh gerando o resultado: Perl real 0m24.136s user 0m23.985s sys 0m0.028s Ruby real 0m50.882s user 0m50.563s sys 0m0.040s Num AMD Athlon 64 com o Ubuntu 11.10 64x 2GB de Ram, Perl sendo mais que 2x mais rápido. De fato, a velocidade que uma linguagem faz uma loop que soma de todos os inteiros de 1 a 1M é o que define se uma linguagem é realmente boa... Mais uma dica: Utilize a formula de soma de PA e você conseguirá o mesmo resultado em uma fração muito menor de tempo, em qualquer linguagem, do que isso que você conseguiu em Perl. Uma solução ruim, continua sendo uma solução ruim independente da linguagem com a que você a implementa ;) Alem de que o Gems é uma porcaria. Seus argumentos aqui também não sensacionais. De qualquer forma, acho que você deveria levar esse seu questionamento para listas de Ruby... la eles podem te ajudar a entender melhor o Gems ou então trabalhar contigo para melhora-lo, se este for o caso. Não sei, talvez seja apenas modinha, mas se a comunidade Ruby não se empenhar a modinha passa e
Re: [Rio-pm] Perl em desuso??
Claro que vi, Nuba. Mas vi muito menos. Aliás, até hoje, não vi nenhum programador Assembly ruim :) Como diz Sturgeon's Law, ninety percent of everything is crap. Agora, acessamos http://modulecounts.com/ Para 2012-04-23, temos, portanto, ~22K módulos ruins no CPAN, contra ~34K módulos ruins no Rubygems. A velocidade média de produção é de 41.4 porcarias em Ruby por dia, contra apenas 5.4 porcarias em Perl por dia :) Enfim, presumo que exista uma massa crítica para que algum produto informacional passe a se comportar como um câncer, corrompendo as mentes menos disciplinadas. Windows no geral, Internet Explorer em especial e, agora, Ruby, cruzaram essa fronteira :P É preciso manter a cabeça aberta, mas não a ponto do cérebro cair para fora ABS() On Mon, Apr 23, 2012 at 16:03, Nuba Princigalli n...@fastmail.fm wrote: Olá Stanislaw, Então você nunca viu programador Perl nivelando a comunidade por baixo? Que sorte a sua! Eu já encontrei alguns ao longo dos anos, gente que produz gambiarras terríveis, write-only, que não têm o menor interesse em se atualizar sobre a linguagem, mas, que em seus departamentos são o cara do Perl, e com isso até afastam as pessoas da linguagem. Ao invés de ficar escolhendo alguém para demonizar (Ruby hoje, Node amanhã, PHP ontem, ASP anteontem, SSI antes de anteontem -- nota: acho que Python só escapou porque, como foi a aposta do Google, o povo respeita mais...) eu sugiro fazer algo mais produtivo, como trabalhar para facilitar a atualização e o crescimento dentro da nossa própria comunidade. Estamos com uma discussão em andamento para o que todo novo Perl Hacker precisa saber, quem se interessar, veja http://mail.pm.org/pipermail/rio-pm/2012q2/008829.html Abraço, Nuba Princigalli On Mon, Apr 23, 2012, at 02:51 PM, Stanislaw Pusep wrote: Eu entendo perfeitamente que somos seres sociais e o controle de raiva é necessário... Mas puxa: os programadores Ruby de agências de publicidade estão fazendo com o mercado de TI o mesmo que os sobrinhos dos diretores fizeram do mercado de uébidizáine (tradução: estão nivelando por baixo). Não que não existam bons programadores Ruby. Não que não existam sobrinhos talentosos. Todavia, quem sempre vai elogiar os seus projetinhos e ser tolerante é a mamãe e a titia. Eu prefiro falar o que penso na caruda do que torcer para que saia uma borboleta dessa larva. (in)felizmente, não sou o único: http://developers.slashdot.org/comments.pl?sid=2787049cid=39687659 ABS() On Mon, Apr 23, 2012 at 14:35, breno br...@rio.pm.org wrote: Eu ia comentar, mas o Bruno falou absolutamente tudo que eu tinha pra dizer. bbuss++ Aureliano, leia com muita calma e atenção a resposta dele. Depois, leia de novo, vai te fazer bem. Acho bacana que vc esteja tão feliz com Perl (a maioria de nós está!) mas linguagens são ferramentas e devemos usar a que melhor se adeque ao seu problema e sua forma de pensar. Perl não está em desuso, apenas passou a dividir o mercado de linguagens dinâmicas com alternativas que não existiam quando a linguagem foi criada. Se você quiser algo mais específico, como sites/sistemas/empresas que usam Perl, ou sobre o crescimento da comunidade, sinta-se à vontade para perguntar, mas note que é uma pergunta diferente. Se você quer defender Perl, evite menosprezar outras linguagens. Fanatismo não se sustenta e o seu argumento de que Ruby é uma linguagenzinha, na minha opinião, criado para viciados em RPG geralmente virgens., se é que posso chamar de argumento, foi pobre, infeliz, ofensivo, desnecessário e errado. Novamente, como o Bruno disse: Para defender Perl não é preciso menosprezar outras linguagens e seus usuários... deixe isso para as pessoas e comunidades sem recursos ;) []s -b On Mon, Apr 23, 2012 at 12:40 PM, Bruno Buss bruno.b...@gmail.com wrote: 2012/4/23 Aureliano Guedes guedes_1...@hotmail.com Monges, Bom dia. Gostaria de levantar uma questão para discutirmos e vermos a opinião de cada um... Perl esta em desuso?? Não. Podem encerrar a thread? Ouvi esse comentário (infeliz, na minha opinião) e ainda tive que ouvir mais (Ruby e Python estão tomando lugar). Afff... Mas Ruby e Python estão tomando lugar, estão tomando uma fatia do que antes era apenas Perl. São ferramentas alternativas ao Perl e cada um escolhe a ferramente que melhor lhe agrada e que torna seu trabalho mais agradável e eficiente. O fato é, quem gosta de POO realmente vai preferir Python, pois poucos sabem que Perl tem suporte a OO, inclusive eu criei vario objetos para mostrar como podemos usar Perl como se fosse POO. Mas, o serio problema que os códigos Python tem com indentação é triste, alem de que tratar tudo como objeto é um saco. Indentação do Python é triste? Apesar de algo que restringe um pouco - quase nada emho - como o programador utiliza a linguagem... eu acho uma coisa legal. Sério mesmo, é
Re: [Rio-pm] Perl em desuso??
for(;;$bruno_buss++){} ABS() On Mon, Apr 23, 2012 at 18:09, Bruno Buss bruno.b...@gmail.com wrote: 2012/4/23 Aureliano Guedes guedes_1...@hotmail.com Vou defender um pouco Python. Apesar de achar chato tudo ter que ser objeto e achar frescura o esse negocio de identação, é uma linguagem com grande desempenho quando falamos de calculos, por isso muito ultilizada na bioinformatica, Não, ela é utilizada na bioinformática por ser fácil e ter um desempenho razoável. Se somente um grande desempenho com cálculos fosse necessário, todos em bioinformática programariam em assembly. o fato do google ter apostado nessa linguagem coopera muito com o crescimento dela, e a comunidade python é empenhada, mas isso não tira o fato de eu achar modinha, quando falo que caiu na modinha não quero desmerecer a lingugagem e sim a massificação de programadores. Essa é a mesma massificação que permite que *você* consiga programar. Sim *você*. *Você* que nunca estudou formalmente computação, que não tem conhecimentos básicos sólidos de arquitetura, algoritmos, linguagens de programação, join(',', @outras_materias_de_computacao). *Você* que é formado em outra área, mas é capaz de aprender a programar para adiantar sua vida, já que temos a disposição máquinas com muitos recursos totalmente sub-utilizadas. *Você* que pega um livro qualquer sobre uma linguagem qualquer e depois de alguns poucos dias se diz programador (mesmo iniciante). Estou pra ver o dia que eu sair com uma faca, rasgando pessoas pela rua se elas vão me chamar de médico ou cirurgião. *Você* é o fruto dessa massificação de programadores. *Você* faz parte integral dela. A menos que você esteja utilizando um dos argumentos mais sem sentido (ou com uma lógica tão bonita e delicada que eu não consigo notar), não fale contra o seu próprio grupo ;) Desculpe pelo reality check ;) Graças a massificação dos programadores, acabamos por ver códigos macarrônicos, sem sentido, etc. Mas ao mesmo tempo, la no fundo, nos sentimos felizes que outras pessoas estão descobrindo essa atividade que nos da tanto prazer ;) Talvez esteja relacionado a: tem emprego. Mas um programador no Brasil deve escolher a linguagem de acordo com a disponibilidade de emprego, assim como o vestibulando escolhe de acordo com o curso que da mais dinheiro (medicina, direito, engenharia civil), Quem escolhe curso superior porque da mais dinheiro não tem o mínimo conceito da minha parte. Como o Breno disse... programador *bom* em [qualquer linguagem], tem emprego garantido. Até porque programador bom, dificilmente fica preso em alguma linguagem... eu mesmo nunca vi oferta de emprego para programador em C, uma vez na minha vida vi ofertar para C++. Você está olhando nos lugares errados, como já disseram ;) Agora a massificação do programador (vou programar na mesma linguagem da galera) não deve ser descartado, pois é igual ver Big Brother, isso atinge não programadores experientes, mas sim novatos (assim como eu, mas eu vim de outro ambiente, vim das biologicas). Viu como você faz parte desse movimento todo que você se diz contra? :) Quanto a Ruby, continuo achando que e uma linguagem criada de certa forma para competir com Perl, as caracteristicas da linguagem remetem a isso, desde a sintaxe, so que uma tentativa frustada, desculpem-me mas o programador Ruby programa em Perl 2.0 e não sabe, quando descobre migra para Python (mas aprende whitespace primeiro). 1) Python, PHP e Ruby são filhotes de Perl. Até onde sei, isso nunca foi escondido. 2) Se Ruby é o Perl 2.0, então deve ser ruim mesmo porque o Perl já está no 5.14 =P [ ]'s -- Bruno C. Buss http://www.brunobuss.net ___ 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