![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
17/06/2008, 13:53
|
Colaborador | | Fecha de Ingreso: mayo-2006 Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 9 meses Puntos: 11 | |
Respuesta: Generar Reportes para queries : Perl pros :
Código:
#!/usr/bin/perl
use warnings;
use strict;
my @data = (
# codigo talla color cantidad
[ qw( PA-200 11 Azul 1 ) ],
[ qw( PA-200 14 Azul 24 ) ],
[ qw( PA-200 12 Negro 18 ) ],
[ qw( PA-200 13 Negro 8 ) ],
[ qw( PA-200 14 Negro 106 ) ],
[ qw( PA-200 15 Negro 17 ) ],
[ qw( PA-200 17 Negro 75 ) ],
);
print 'Introduzca el código:';
chomp(my $codigo_a_sacar = <>);
my %resultados;
my %tallas;
# Recogida de datos
foreach my $fila ( @data ) {
my ($data_codigo,$data_talla,$data_color,$data_cantidad) = @$fila;
next if $data_codigo ne $codigo_a_sacar;
$resultados{$data_color}{$data_talla} = $data_cantidad;
$tallas{$data_talla} = 1;
}
# Salida
print join q{|}, q{ }x8, map { sprintf " %2d ", $_ } sort keys %tallas;
print "\n";
print join q{+}, q{ }x8, map { '----' } 1 .. scalar keys %tallas;
print "\n";
foreach my $color ( sort keys %resultados ) {
printf "%-8s|", $color;
foreach my $talla ( sort keys %tallas ) {
my $dato = $resultados{$color}{$talla} || 0;
printf "%3d ", $dato;
}
print "\n";
}
__END__
La salida es:
Código:
Introduzca el código:PA-200
| 11 | 12 | 13 | 14 | 15 | 17
+----+----+----+----+----+----
Azul | 1 0 0 24 0 0
Negro | 0 18 8 106 17 75
Última edición por jferrero; 17/06/2008 a las 17:23 |