Yes it works but I also need to print the files with values with '0', and your code just prints the files that have values different of '0', for example when I use your code I got this:
2005-09-19 - NA - 56 - 788 2005-09-19 - NA - 43 - 540 2005-09-19 - NE - 10 - 975 2005-09-19 - SP - 23 - 321 But I need these too: 2005-09-19 - NCW - 0 - 0 2005-09-19 - S - 0 - 0 2005-09-19 - SE - 0 - 0 How can I get them all ??? Thanks for your help John :). ----- Original Message ----- From: "John W. Krahn" <[EMAIL PROTECTED]> To: "Perl Beginners" <beginners@perl.org> Subject: Re: Repetead values Date: Fri, 14 Oct 2005 14:39:16 -0700 > > Rafael Morales wrote: > > Hi. > > Hello, > > > My trouble is with a value duplicated value on a nested foreach, > > these are my variables: > > > > %names=( > > 1=>'NA' > > 2=>'NCW' > > 3=>'NE' > > 4=>'S' > > 5=>'SE' > > 6=>'SP' > > ); > > > > %hash{'2005-09-19'}{'1'}{'56'}=788; > > %hash{'2005-09-19'}{'1'}{'43'}=540; > > %hash{'2005-09-19'}{'6'}{'23'}=321; > > %hash{'2005-09-19'}{'3'}{'10'}=975; > > > > And I want an output like this: > > 2005-09-19 - NA - 56 - 788 > > 2005-09-19 - NA - 43 - 540 > > 2005-09-19 - NCW - 0 - 0 > > 2005-09-19 - NE - 10 - 975 > > 2005-09-19 - S - 0 - 0 > > 2005-09-19 - SE - 0 - 0 > > 2005-09-19 - SP - 23 - 321 > > > > I do it by this way: > > > > my %final; > > my $match = 0; > > foreach my $date(sort keys %hash) { > > foreach my $num_name(sort {$a <=> $b}(keys %{$hash{$date}}) ) { > > foreach my $names(sort {$a <=> $b}(keys %names) ) { > > if ($num_name == $names) { $match = 1; > > foreach my $values(sort {$a <=> $b}(keys > > %{$hash{$date}{$num_state}}) ) { > > > > $final{$date}{$names{$names}}{$values}=$hash{$date}{$num_state}{$values}; > > > > } #end values > > } #end if > > else {$match = 0;} > > }end names > > if ($match == 0){ > > $final{$date}{$names{$names}}{0}=0; > > }#end if > > }end num_name > > }end date > > > > However this is what I get: > > 2005-09-19 - NA - 0 - 0 <----- Repeated value :( > > 2005-09-19 - NA - 56 - 788 > > 2005-09-19 - NA - 43 - 540 > > 2005-09-19 - NCW - 0 - 0 > > 2005-09-19 - NE - 10 - 975 > > 2005-09-19 - S - 0 - 0 > > 2005-09-19 - SE - 0 - 0 > > 2005-09-19 - SP - 23 - 321 > > It looks like you want something like: > > for my $date ( keys %hash ) { > for my $num_name ( keys %{ $hash{ $date } } ) { > if ( exists $names{ $num_name } ) { > $hash{ $date }{ $names{ $num_name } } > = delete $hash{ $date }{ $num_name }; > } > } > } > > > > John > -- > use Perl; > program > fulfillment > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> -- _______________________________________________ Get your free email from http://mymail.bsdmail.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>