Perl - Problema incremanetar valor alfanumérico

 
Vista:

Problema incremanetar valor alfanumérico

Publicado por gorkalinux (1 intervención) el 14/04/2009 09:51:00
Tengo un par de valores introducidos por teclado:

print " inicio [4 digitos]: ";
my $inicio = <STDIN>;
chop ($inicio);

print " final [4 digitos]: ";
my $final = <STDIN>;
chop ($final);

Inicio siempre es menor que final. Pongamos que meto inicio=9 y final=11. Lo que quiero es crear los siguientes ficheros:

for (my $i=$inicio; $i<=$final; $i++)
{
open (OUT, ">", "read_".$i.".xml") or die "No ";
#ETC ...
}

Pero en lugar de:

read_0009.xml
read_0010.xml
read_0011.xml

Me sale:

read_0009.xml
read_10.xml
read_11.xml

¿Alguien sabe cómo conseguir lo que quiero?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema incremanetar valor alfanumérico

Publicado por Joaquin Ferrero (4 intervenciones) el 16/04/2009 10:25:51
Ya te respondimos en el otro foro, pero aquí te doy otra solución alternativa.

Si en vez de 'read_0009.xml' pudieras trabajar con 'read0009.xml' (quitar el guión bajo), entonces se podría utilizar la magia del incremento en literales:

#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

my $inicio = 9;
my $final = 15;

$inicio = sprintf "read%04d", $inicio;
$final = sprintf "read%04d", $final;

while ( $inicio ne $final ) {

print "$inicio.xml ";

$inicio++;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar