[SP-pm] ER para separar o primeiro e o último campo de um registro.

breno breno at rio.pm.org
Mon Dec 22 10:06:25 PST 2008


2008/12/22 Eden Cardim <edencardim em gmail.com>:
> 2008/12/22 jimmy <ronaldo_tgz em yahoo.com.br>:
>> saudações wagner,
>>
>> sou iniciante em  perl  e  me  parece mas fácil fazer  split  nas  linhas  pelo
>> caracter de espaço e imprir o  primeiro e o último  elemento, a menos  que  seu
>> arquivo  fuja do  padrão que  você  usou  para  exemplificar, isso  também deve
>> funcionar.
>
> Funciona, porém, acho que seria menos eficiente.
>

Tenho que concordar com o Eden nessa. Normalmente funções específicas
são mais rápidas que ER, mas não me parece ser esse o caso:

------------------------8<-------------------------
use strict;
use Benchmark qw(cmpthese :hireswallclock);

my @lista = (
    '1         ABC X Y CDA 40',
    '5         XYZ - U BBB  0',
    '8         --- T C CTT 80',
);
my $resultado = '';
my @novo = ();

cmpthese(1000000, {
    'ER' => sub {
                for(@lista) {
                    if (m/^(\d+)\D*(\d+)$/) {
                        $resultado = "$1,$2";
                    }
                }
            },
    'split' => sub {
                for(@lista) {
                    @novo = split;
                    $resultado = "$novo[0],$novo[-1]";
                }
               },
    });
------------------------8<-------------------------

[garu em bebop]$ perl bench.pl
          Rate split    ER
split  49579/s    --  -57%
ER    114943/s  132%    --


[]s

-b


More information about the SaoPaulo-pm mailing list