Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^2: array of arrays

by Anonymous Monk
on Jun 12, 2017 at 22:43 UTC ( [id://1192635]=note: print w/replies, xml ) Need Help??


in reply to Re: array of arrays
in thread array of arrays

Hello kevbot:

Thank you for your solution. Since this task is for me to learn, took me a while to study one by one from the bottom up. Yours was the last.

I would like to know if it is possible for you to show me how print on the fly each row of the while loop with the array size and the sum total of each array.

Something like this:

my %data; $e = '0'; while(<$fh>){ $e++; chomp $_; my ($key, $val) = split(/\|/, $_); push @{$data{$key}},$val; $Grand_Total += "$val"; my $size = scalar(@{$data{$key}}); ## WRONG doesn't print $Sub_Total[$key] += $data{$key}[$val]; ## WRONG doesn't prin +t print"Row ($e) / Array Size [$size] key ($key) / Amount ($val +) / Sub Total ($Sub_Total[$key]) / Grand_Total = ($Grand_Total)<hr>" +; }


Hope you can do it

Thanx
virtualweb

Replies are listed 'Best First'.
Re^3: array of arrays
by huck (Prior) on Jun 12, 2017 at 23:04 UTC

    Replace

    $Sub_Total[$key] += $data{$key}[$val];
    with
    $Sub_Total[$key] +=$val;
    You should then come back and tell us what you did wrong in the original.

Re^3: array of arrays
by kevbot (Vicar) on Jun 13, 2017 at 05:33 UTC
    Hello virtualweb,

    My solution did not use an array. The contents of $data{$key} are a single scalar value (the running total of values for the given key). So, my code is not keeping track of how many data entries that are encountered for a given value of $key.

    Here is a modified version of my code that will print out the information you request. Note, I'm still not using arrays. In this code, $data{$key} contains a hash reference with keys size and total. The value of size is the current number of elements found for the given $key. The value of total is the current total of values that have been encountered for the given $key.

    #!/usr/bin/env perl use strict; use warnings; open my $fh, '<', 'test_file.txt' or die 'Can not open file'; my %data; my $row_number = 1; my $grand_total = 0; while(<$fh>){ chomp $_; my ($key, $val) = split(/\|/, $_); $data{$key}->{'size'}++; $data{$key}->{'total'} += $val; $grand_total += $val; print "Row ($row_number) ". "/ Array Size [$data{$key}->{'size'}] key ($key) ". "/ Amount ($val) / Sub Total ($data{$key}->{'total'}) ". "/ Grand_Total = ($grand_total)\n"; ++$row_number; } foreach my $key ( sort { $a <=> $b } keys %data ){ print "the total is: (".$data{$key}->{'total'}.")\n"; } exit;

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1192635]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2024-04-26 03:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found