[perl] Contando cuantos....

Salvador Ortiz Garcia sog@msg.com.mx
Wed, 24 Mar 1999 21:27:24 -0600 (EST)


On Wed, 24 Mar 1999, Adrian Galindo wrote:

> 
> Hay una forma menos cochina para contar cuantas veces esta determinado
> caracter en una cadena que esto ...
> 
> $cadena="uno|dos|tres|||";
> $final=$cadena;
> $final =~ s/[^\|]//g;
> $cuantos = length($final);
> print "$cuantos\n";

Prueba usando:

  $cuantos = $cadena =~ tr/|/|/;

No se si la consideres más limpia, pero es _mucho_ más rapida, ademas de
que ese uso de 'tr' está documentado.

> Esto me regresa un 5 y es mas o menos lo que quiero. En realidad lo que
> quiero saber es cuantos campos hay en esa linea, por lo tanto, en este
> caso, tengo $cuantos + 1 campos, ya que con esto:
> 
> @valores = split (/\|/,$cadena);
> $numcampos = scalar(@valores);
> print "$numcampos campos en '$cadena'\n"; 
> 
> me regresa un 3 ya que no se meten los seis elementos al arreglo, cosa
> que si hace cuando no hay campos vacios...

Entonces lo que necesitas es:

@valores = split(/\|/, $cadena, -1);

Sucede que por default split no trabaja más de lo necesario.

Saludos

Salvador Ortiz


--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : cancelacion perl