[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