#!/usr/local/bin/perl -W die "$0 " if @ARGV < 2; $n = $ARGV[0]; $vocales = lc($ARGV[1]); # @vocales = split //, $vocales; for $i (qw(a e i o u)){ if ($vocales !~ /$i/) { push @novocales, $i; }else{ push @vocales, $i; } $count{$i}++ while ($vocales =~ /$i/g); } use File::Slurp; @palabras = read_file('Spanish.dict2'); for $i (@palabras){ chomp ($i); chop ($i); next if ($n != length($i)); $ok = 1; for $j (@vocales){ $k=0; $k++ while ( $i =~ /$j/g ); if ($k != $count{$j} ){ $ok =0; last; } } next if ($ok==0); for $j (@novocales){ if ($i =~ /$j/) { $ok =0; last; } } if ($ok==1){ print "$i\n"; } } __END__ Este programa busca palabras en un diccionario que tengan una longitud dada y que tengan exactamente las vocales que se le dicen. Está hecho para ayudar en un juego de móvil en el que aparecen cuatro imágenes y una serie de letras (consonantes y vocales) para dar con la palabra que tienen en común las imágenes. Puede servir también para descubrir las palabras que contienen todas las vocales sólo una vez cada una. El módulo File::Slurp me encanta porque es rápido y hace muy fácil devorar ficheros o grabarlos. Deberían incluirlo en el CORE