Hi, Nathalie You could try the attached code.
Best gil On 09/09/16 12:54, Nathalie Conte wrote: > Hello, > I have a question about making a calculation within a loop > > I have a hash of hashes > ############## > #!/usr/bin/perl > use strict; > use warnings; > > use Data::Dumper qw(Dumper); > > my %grades; > $grades{"Foo "}{1} = 97; > $grades{"Foo "}{2} = 107; > $grades{"Peti "}{1} = 88; > $grades{"Peti "}{3} = 89; > $grades{"Peti "}{4} = 99; > > print Dumper \%grades; > print "----------------\n"; > > foreach my $name ( keys %grades) { > foreach my $subject (sort {$a <=> $b} keys %{ $grades{$name} }) { > print "$name, $subject: $grades{$name}{$subject}\n"; > } > } > > ############## > output is > $VAR1 = { > 'Peti ' => { > '4' => 99, > '1' => 88, > '3' => 89 > }, > 'Foo ' => { > '1' => 97, > '2' => 107 > } > }; > ---------------- > Peti , 1: 88 > Peti , 3: 89 > Peti , 4: 99 > Foo , 1: 97 > Foo , 2: 107 > ############### > Now, what I would like to achieve: > I want to make a calculation, in each $name (Peti and Foo), calculate: > for Peti: > first line : no action > second line -(minus) 1st line: > print subject 3-1=2, 89-88=1 > third line - 2nd line: > print subject 4-3=1, 99-89=10 > > for foo: > first line : no action > second line -(minus) 1st line: > print subject 2-1=2, 107-97=10 > > > Many thanks for any advice > Best > Nathalie > >
q.pl
Description: Perl program
signature.asc
Description: OpenPGP digital signature