Soy un poco nueva con Perl. El script que intento hacer debería contar cuántas veces está repetida una palabra, en una lista y al final imprimir la palabra y el número de veces que aparece.
Lo he intentado de mil formas y no he podido. Estaba revisando otros foros similares e intenté con las recomendaciones pero no me funciona. Por favor, ¡¡¡necesito ayuda!!!
¡¡Gracias!!
Using perl Syntax Highlighting
- #!/usr/bin/perl
- my $hits = 'testb.txt';
- #open file
- open( HITS, $hits );
- #read sequences
- my @hits = <HITS>;
- close HITS;
- for ( my $i = 0; $i < scalar @hits; ++$i ) { #leer cada linea del archivo
- my @temp = split( /\|/, $hits[$i] ); #determino a que corresponde cada campo en la linea actual
- my $query = $temp[0];
- my $exp = $temp[1];
- my $subj = $temp[6];
- my $count = 1;
- %x = ( $query => $count ); #creo un array para el contador correspondiente a cada query
- my @temp2 = split( /\|/, $hits[ $i - 1 ] ); #determino a que corresponde cada campo en la linea anterior
- my $p_query = $temp2[0];
- my $p_exp = $temp2[1];
- my $p_subj = $temp2[6];
- #verifico si el query de la linea actual es igual al de la linea anterior, si es así sumo 1 al contador
- if ( $query eq $p_query ) {
- $x{$count}++;
- }
- else {
- $x{$count} = 1; #si no, el contador continua en 1
- }
- }
- for my $query ( keys %x ) { #ahora imprimo cada query con su contador
- if ( $x{$count} > 0 ) {
- print "$query\thits:$x{$count}\n";
- }
- }
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4