Veréis quería crear un bucle dentro de otro con la función for que es la que controlo por ahora.. Siguiendo con mi programilla para generar archivos que algunos conoceréis ya (gracias de nuevo explorer) del tema cambiar un archivo, me encuentro con un problema al definir un loop dentro de otro.. Quiero cambiar unas variables de manera que la primera la defino en el primer bucle y quiero que quede fija en un valor mientras con el segundo bucle recorro todo el rango de la segunda variable generando así una serie de archivos tal que siendo la primera variable A y la segunda B queden así A1B1, A1B2, A1B3 y volviendo de nuevo al primer bucle A2B1, A2B2.. y así sucesivamente.. El problema que me encuentro es que me genera solamente archivos tal que A1B3 tantas veces como debería generar los sucesivos archivos. No se si me explico muy bien... así que os dejo aquí mi pequeño programa a ver si me podéis orientar un poco. ¡Gracias por adelantado y un saludo!
Using perl Syntax Highlighting
# Programa genera sucesivos archivos de entrada para FAST.
# ______________________________________________________________________
# Cambiamos la altura de la torre en el archivo_parámetros.
for $i (72..74) {
for $j (-3..0) {
# Lugar donde almacenaremos el fichero leido y modificado
my @params;
# Abrimos el fichero en lectura
open (PARAMS, "<PARAMS.in") or die "No se pudo abrir PARAMS.in: $!";
# Para todas las lineas del fichero hacemos el cambio
for $line (<PARAMS>) {
if ($line =~ /^B/) {
$line =~ s/=.*\d+/= $j/ or die "No se pudo cambiar el pitch:$!";
} else {
("$line =~ s/TOWER_HT =.*\d+/TOWER_HT= $i/") == 0 or die "No se cambió la altura de la torre: $!";
}
push @params, $line;
}
close PARAMS;
# Grabamos el resultado
open (OVERWRITE, ">PARAMS.in") or die "No se pudo abrir PARAMS.in: $!";
print OVERWRITE @params or die "No se pudo sobreescribir PARAMS.in: $!";
close OVERWRITE;
# Corre el programa prepro y genera una entrada para FAST.
system ("c:\\perl\\bin\\perl prepro.pl PARAMS.in FAST.template H$i($j).in") == 0 or die "No se generó el input para FAST: $!";
}
}
# ______________________________________________________________________
# Cambiamos la altura de la torre en el archivo_parámetros.
for $i (72..74) {
for $j (-3..0) {
# Lugar donde almacenaremos el fichero leido y modificado
my @params;
# Abrimos el fichero en lectura
open (PARAMS, "<PARAMS.in") or die "No se pudo abrir PARAMS.in: $!";
# Para todas las lineas del fichero hacemos el cambio
for $line (<PARAMS>) {
if ($line =~ /^B/) {
$line =~ s/=.*\d+/= $j/ or die "No se pudo cambiar el pitch:$!";
} else {
("$line =~ s/TOWER_HT =.*\d+/TOWER_HT= $i/") == 0 or die "No se cambió la altura de la torre: $!";
}
push @params, $line;
}
close PARAMS;
# Grabamos el resultado
open (OVERWRITE, ">PARAMS.in") or die "No se pudo abrir PARAMS.in: $!";
print OVERWRITE @params or die "No se pudo sobreescribir PARAMS.in: $!";
close OVERWRITE;
# Corre el programa prepro y genera una entrada para FAST.
system ("c:\\perl\\bin\\perl prepro.pl PARAMS.in FAST.template H$i($j).in") == 0 or die "No se generó el input para FAST: $!";
}
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4