#!/usr/local/bin/perl -W

die "$0 <no. letras> <vocales p.ej. aaioe>" 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
  
  
