develooper Front page | perl.beginners | Postings from January 2011

Re: Newbie queries

Thread Previous | Thread Next
From:
Octavian Rasnita
Date:
January 25, 2011 02:43
Subject:
Re: Newbie queries
Message ID:
381F87E70E674126A803C3AC7CC3B5BB@octavian
From: "dolphin" <yc282004@yahoo.com.sg>
> Hi,
> 
> I'm learning perl now and would like to find out how to perform the
> following if given in a text file?
> 
> 
> AAAA,12
> AAAA,437
> BBBB,124
> CCCC,45
> BBBB,789
> AAAA,67
> CCC,567
> DDD,5
> 
> 
> How to sum up the 2nd column based on the 1st column with the
> following result:
> 
> 
> AAAA:
> BBB:
> CCC:
> DDD:
> 
> 
> Thanks in advance.


You need to read the file line by line:


use strict;
use warnings;

my %items;    #The hash with labels and their corresponding sums

open my $file, '<', 'file_name' or die $!;

while ( my $line = <$file> ) {

    # Here split the line:
    my ( $label, $value ) = split /,/, $line, 2;

    # Then add each value for its corresponding label:
    $items{$label} += $value;
}

close $file;

# Here print the sorted hash of items:
for my $label ( sort keys %items ) {
    print "$label: $items{$label}\n";
}

HTH.

Octavian


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About