[SP-pm] Melhor forma para...

Blabos de Blebe blabos at gmail.com
Tue Jul 16 07:43:00 PDT 2013


Opa,

Duas coisas. Na verdade três.

Seu código tá até bem limpo, seguindo algumas boas práticas até.

...

Mas pode melhorar :)

Não use bareword para descritor de arquivo, use uma variável. Para lhe
apontar a documentação correta "I summon garu".

open my $fh, '<', 'filename.txt' or die 'Cannot open';

Parêntesis em Perl são opcionais em alguns casos, sendo que usar ou não
usar muitas vezes é questão de estilo. Em alguns outros casos são
obrigatórios. Na dúvida, use.

...

Para imprimir hash com elementos em ordem, eu gosto e usar *slice* ao invés
de loop.

my %hash = ( etc => 1, bar => 3, foo => 5)
my @order = qw{ foo bar etc };
my @ordered_values = @{hash}{ @order };  ## Slice. Chaves a mais de
propósito.
print join( ';', @ordered_values );

Você pode usar o sort por chave:
my @order = sort { $a cmp $b} keys %hash;

Note que @order = sort { $a <=> $b} keys %hash;
Não funciona.

Ou a forma mais curta:
@order = sort keys %hash;

Ordenando por valor decrescente
@order = sort { $hash{$b} <=> $hash{$a}} keys %hash;

Novamente, @order = sort { $hash{$b} cmp $hash{$a}} keys %hash;
Não funciona.


...

Talvez, se o objetivo for só contar e mais nada, usar expressão regular
pode ser mais rápido, mas como regexp está fora dos meus domínios então
posso estar errado.

Mede aí e depois conta...


[]'s



2013/7/15 Renato Santos <renato.cron em gmail.com>

> Acredito que não há motivos para não utilizar o *for *nesse caso,
>
> até porque, não parece ter muitas outras soluções,
>
> se for pra deixar o codigo menor, ficará menos legivel. se for pra
> aumentar a velocidade, você pode reescrever em alguma linguagem compilada,
> tipo C, só que vai dar mais trabalho!
>
>
> 2013/7/15 Rafael Silveira <dev.silveira em yahoo.com>
>
>>  Boa noite Renato.
>>
>> Na verdade, não importa não!
>> Mas, eu gostaria de fazer da melhor forma possível, inclusive evitar
>>  usar outro for.
>> Estava pensando em fazer algo parecido, porém salvar num array, e mandar
>> pro arquivo com um join(' ', $var).
>>
>> Mas mesmo assim utilizaria o for.
>>
>> Muito obrigado a todos! :D
>>
>> []'s
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130716/08915ce9/attachment.html>


More information about the SaoPaulo-pm mailing list