in reply to printing output on text file from file - perl
G'day Perlseeker_1,
Both this, and your subsequent post, seem poorly worded and lacking information. I do not appear to be alone in having trouble understanding exactly what you want. Please read "How do I post a question effectively?" to see how to improve your posts.
This general class of problem looks like a simple case of reading files and keeping track of totals. Given your second post has input data and some indication of the output (I've guessed at how you get 2x"Rack" from 8x"RACK" and 4x"TACK"), here's some simple code to accumulate totals and output the results.
#!/usr/bin/env perl -l use strict; use warnings; use Inline::Files; my @file_handles = \(*ANIMALS, *FRUITS, *VEGETABLES); my %data; for my $fh (@file_handles) { while (<$fh>) { my ($id, $type, $val1, $val2) = split; $data{in}{$type}{$id}{val1} += $val1; $data{in}{$type}{$id}{val2} += $val2; $data{subtotal}{$type}{val1} += $val1; $data{subtotal}{$type}{val2} += $val2; $data{total}{val1} += $val1; $data{total}{val2} += $val2; } } for my $type (sort keys %{$data{in}}) { print $type; for (sort keys %{$data{in}{$type}}) { print join("\t" => $_, @{$data{in}{$type}{$_}}{qw{val1 val2}}) +; } print join("\t" => 'Sub', @{$data{subtotal}{$type}}{qw{val1 val2}} +); } print join("\t" => 'Tot', @{$data{total}}{qw{val1 val2}}); __ANIMALS__ A RACK 2 2 B RACK 2 2 C RACK 2 2 D RACK 2 2 __FRUITS__ A RACK 2 2 B RACK 2 2 C RACK 2 2 D RACK 2 2 __VEGETABLES__ E TACK 4 2 F TACK 4 2 G TACK 4 2 H TACK 4 2
Output:
RACK A 4 4 B 4 4 C 4 4 D 4 4 Sub 16 16 TACK E 4 2 F 4 2 G 4 2 H 4 2 Sub 16 8 Tot 32 24
If you are unable to adapt this to your requirements, ensure you adhere to the guidelines in "How do I post a question effectively?" when asking any follow-up questions.
-- Ken
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: printing output on text file from file - perl
by Perlseeker_1 (Acolyte) on Oct 19, 2013 at 04:03 UTC |