Re: [Rio-pm] Comparação de arquivos
Hi. Em 24 de novembro de 2012 22:03, Blabos de Blebe escreveu: > "Três coisas são infinitas: o universo, a paciência do Breno e a Mas se o universo está em constante expansão, ele não é infinito, certo? Teoricamente o espaço é infinito, mas o universo não. Logo, a paciência do breno está acima do universo. LOL []'s ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Comparação de arquivos
se vc considerar o universo como o espaço também... 2012/11/26 Junior Moraes > Hi. > > Em 24 de novembro de 2012 22:03, Blabos de Blebe escreveu: > > "Três coisas são infinitas: o universo, a paciência do Breno e a > > > Mas se o universo está em constante expansão, ele não é infinito, certo? > Teoricamente o espaço é infinito, mas o universo não. Logo, a paciência do > breno está acima do universo. LOL > > []'s > > ___ > 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
Re: [Rio-pm] Comparação de arquivos
Oi a todos, aproveitando a paciência infinita do Breno... Poderias esclarecer como funciona isto: (?...) e o que acontece então aqui: "valores agrupados na regex por nome dentro do hash %+. No caso, acessei o grupo (?) 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 Para: Perl Mongers Rio de Janeiro Enviadas: Sábado, 24 de Novembro de 2012 9:45 Assunto: Re: [Rio-pm] Comparação de arquivos 2012/11/24 Aureliano Guedes : > > 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 (?\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 (?...) 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 (?) 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
Re: [Rio-pm] Comparação de arquivos
a partir de alguma versão recente (5.12 ?) introduziu os named groups. Vc acessa atraves do hash %+ que é uma variavel especial "amarrada" a ultima expressão regular daquele bloco de codigo. criar variaveis é perigoso. se vc tem algo como $password não vai querer isso sobreescrito por /(?.+)/ por isso vc acessa $+{password} o quanto antes, pois a proxima operação de match vai resetar a variavel 2012/11/26 Nicole > Oi a todos, > > aproveitando a paciência infinita do Breno... > > Poderias esclarecer como funciona isto: > (?...) > > e o que acontece então aqui: > "valores agrupados na regex por nome dentro do hash %+. No caso, > acessei o grupo (?) 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 > *Para:* Perl Mongers Rio de Janeiro > *Enviadas:* Sábado, 24 de Novembro de 2012 9:45 > *Assunto:* Re: [Rio-pm] Comparação de arquivos > > 2012/11/24 Aureliano Guedes : > > > > 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 (?\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 (?...) 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 (?) 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 > -- 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
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 > Oi a todos, > > aproveitando a paciência infinita do Breno... > > Poderias esclarecer como funciona isto: > (?...) > > e o que acontece então aqui: > "valores agrupados na regex por nome dentro do hash %+. No caso, > acessei o grupo (?) 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 > *Para:* Perl Mongers Rio de Janeiro > *Enviadas:* Sábado, 24 de Novembro de 2012 9:45 > *Assunto:* Re: [Rio-pm] Comparação de arquivos > > 2012/11/24 Aureliano Guedes : > > > > 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 (?\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 (?...) 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 (?) 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] Usar API Google Maps.
Oi pessoal, Estou fazendo alguns testes com o módulo Geo::Code::GoogleMaps e outros módulos que por sua vez não são módulos para SIG (GIS) quando executo meu script ele retorna um erro afinando que não foi possível localizar o módulo no sistema. O problema de fato é que eu já instalei os módulos e na instalação não ocorreu erros. Isso acontece com outros módulos também. Estou usando ubuntu 12.04 e Debian 6, como posso resolver este problema? Erro: Can't locate Geo/Coder/GoogleMaps.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at GM_extractor.pl line 4. BEGIN failed--compilation aborted at GM_extractor.pl line 4. Em 21 de novembro de 2012 14:18, Gabriel Andrade escreveu: > > On Nov 19, 2012, at 2:02 PM, Cleysinho wrote: > > > Olá Pessoal, > > > > Estou em um trabalho que será parte da minha dissertação que envolve > Sistema de Informação Geográfica. Estou procurando uma forma de usar a API > do Google Maps dentro dos códigos em Perl para gerar mapas dinâmicos > conforme a consulta do usuário. Implementei uma Data Warehouse que possui > mais de 30.000 coordenadas geográficas de virus do mundo todo. Um sistema > semelhante que possui que estou usando como modelo é o GOLD - > http://www.genomesonline.org/cgi-bin/GOLD/index.cgi?page_requested=GenomeMap, > alguém poderia me dar uma sugestão do que usar para implementar esse mapa? > > > > Você pode popular esses dados num banco que possua suporte a indexação > geoespacial (GIS) e implementar uma API simples para consultar esses > dados. > > Construa uma página que carrega um mapa do Google Maps e utilize API > Javascript oferecida[1] para realizar consultas em sua API e carregar > os dados retornados no mapa. > > Um exemplo de uso seria realizar uma consulta à sua API passando o > atual viewport no mapa e retornando a lista de vírus contida naquela > área do mapa. O viewport pode ser obtido, por exemplo, através de um > evento de zoom disparado após a interação do usuário com o mapa. > > > [1] https://developers.google.com/maps/documentation/javascript/reference > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- ** .: Inteligência Coletiva :. Uma inteligência distribuída por toda parte: tal é o nosso axioma inicial. Ninguém sabe tudo, todos sabem alguma coisa, todo o saber está na humanidade’. (Pierre Lévy) José Cleydson F. da Silva *O**pen Source Bioinformatics Community* http://opensourcebioinformatics.com ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Comparação de arquivos
Obrigada, Stanislaw e Tiago, lembro de ter visto isso na palestra do brian d foy no YAPC do ano passado, mas nunca tinha usado. Vou estudar esses artigos. Obrigada! Nicole De: Stanislaw Pusep Para: Nicole ; Perl Mongers Rio de Janeiro Enviadas: Segunda-feira, 26 de Novembro de 2012 11:01 Assunto: 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 Oi a todos, > >aproveitando a paciência infinita do Breno... > > >Poderias esclarecer como funciona isto: >(?...) > > >e o que acontece então aqui: > >"valores agrupados na regex por nome dentro do hash %+. No caso, >acessei o grupo (?) 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 >Para: Perl Mongers Rio de Janeiro >Enviadas: Sábado, 24 de Novembro de 2012 9:45 >Assunto: Re: [Rio-pm] Comparação de arquivos > > >2012/11/24 Aureliano Guedes : >> >> 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 (?\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 (?...) 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 (?) 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] Usar API Google Maps.
Você instalou o Geo::Coder::GoogleMaps como root do sistema? Ou usando algo do tipo local::lib ou perlbrew? O que aparece se vc digita "set | grep PERL" numa shell? E se vc rodar "perl -MGeo::Coder::GoogleMaps -E1"? []s -b 2012/11/26 Cleysinho : > Oi pessoal, > > Estou fazendo alguns testes com o módulo Geo::Code::GoogleMaps e outros > módulos que por sua vez não são módulos para SIG (GIS) quando executo meu > script ele retorna um erro afinando que não foi possível localizar o módulo > no sistema. O problema de fato é que eu já instalei os módulos e na > instalação não ocorreu erros. Isso acontece com outros módulos também. > Estou usando ubuntu 12.04 e Debian 6, como posso resolver este problema? > > Erro: > Can't locate Geo/Coder/GoogleMaps.pm in @INC (@INC contains: /etc/perl > /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 > /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 > /usr/local/lib/site_perl .) at GM_extractor.pl line 4. > BEGIN failed--compilation aborted at GM_extractor.pl line 4. > > > Em 21 de novembro de 2012 14:18, Gabriel Andrade > escreveu: > >> >> On Nov 19, 2012, at 2:02 PM, Cleysinho wrote: >> >> > Olá Pessoal, >> > >> > Estou em um trabalho que será parte da minha dissertação que envolve >> > Sistema de Informação Geográfica. Estou procurando uma forma de usar a API >> > do Google Maps dentro dos códigos em Perl para gerar mapas dinâmicos >> > conforme a consulta do usuário. Implementei uma Data Warehouse que possui >> > mais de 30.000 coordenadas geográficas de virus do mundo todo. Um sistema >> > semelhante que possui que estou usando como modelo é o GOLD - >> > http://www.genomesonline.org/cgi-bin/GOLD/index.cgi?page_requested=GenomeMap, >> > alguém poderia me dar uma sugestão do que usar para implementar esse mapa? >> > >> >> Você pode popular esses dados num banco que possua suporte a indexação >> geoespacial (GIS) e implementar uma API simples para consultar esses >> dados. >> >> Construa uma página que carrega um mapa do Google Maps e utilize API >> Javascript oferecida[1] para realizar consultas em sua API e carregar >> os dados retornados no mapa. >> >> Um exemplo de uso seria realizar uma consulta à sua API passando o >> atual viewport no mapa e retornando a lista de vírus contida naquela >> área do mapa. O viewport pode ser obtido, por exemplo, através de um >> evento de zoom disparado após a interação do usuário com o mapa. >> >> >> [1] https://developers.google.com/maps/documentation/javascript/reference >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > .: Inteligência Coletiva :. > Uma inteligência distribuída por toda parte: tal é o nosso axioma inicial. > Ninguém sabe tudo, todos sabem alguma coisa, todo o saber está na > humanidade’. (Pierre Lévy) > > José Cleydson F. da Silva > Open Source Bioinformatics Community > http://opensourcebioinformatics.com > > > ___ > 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] Usar API Google Maps.
Oi Breno, Os comandos set | grep PERL e perl -MGeo::Coder::GoogleMaps -E1 não retornam nenhum resultado na saída padrão. Para instalar sempre uso os comandos padrão: cpan -i install Geo::Coder::GoogleMaps ou dentro do cpan com install Geo::Coder::GoogleMaps. Abç. Em 26 de novembro de 2012 17:38, breno escreveu: > Geo::Coder::GoogleMaps -- ** .: Inteligência Coletiva :. Uma inteligência distribuída por toda parte: tal é o nosso axioma inicial. Ninguém sabe tudo, todos sabem alguma coisa, todo o saber está na humanidade’. (Pierre Lévy) José Cleydson F. da Silva *O**pen Source Bioinformatics Community* http://opensourcebioinformatics.com ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Usar API Google Maps.
Olha, se "perl -MGeo::Coder::GoogleMaps -E1" funciona, então o perl achou o módulo no seu sistema. Se, nessa mesma shell, vc faz "perl GM_extractor.pl" ele dá pau? Pode colar o seu código no "http://paste.scsys.co.uk";? []s -b 2012/11/26 Cleysinho : > Oi Breno, > > Os comandos set | grep PERL e perl -MGeo::Coder::GoogleMaps -E1 não retornam > nenhum resultado na saída padrão. Para instalar sempre uso os comandos > padrão: > cpan -i install Geo::Coder::GoogleMaps ou dentro do cpan com install > Geo::Coder::GoogleMaps. > > Abç. > Em 26 de novembro de 2012 17:38, breno escreveu: >> >> Geo::Coder::GoogleMaps > > > > > -- > .: Inteligência Coletiva :. > Uma inteligência distribuída por toda parte: tal é o nosso axioma inicial. > Ninguém sabe tudo, todos sabem alguma coisa, todo o saber está na > humanidade’. (Pierre Lévy) > > José Cleydson F. da Silva > Open Source Bioinformatics Community > http://opensourcebioinformatics.com > > > ___ > 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