NEW Q::Now I want to refer to one of the values to do sth with it. E.G. Add a new transaction '-37' to member 'Feynman'. How can I do this? I tried sth like this
my $account_hash = $accounts->{78}; foreach my $transactions ($account_hash){ push @{ $account_hash{ transactions } }, '-42.37'; } print Dumper $account_hash{ transactions };
Hi guys, I have a data file like this
A,01,Newton,Issac,Physics, 5.6 B,144.56 B,1034.65 B,12.23 A,34,Einstein,Albert,Physics,12.22 B,2346.89 B,876.23 B,7656.81 B,745.21 B,25.63 B,89.56 B,7789.23
This is multiple record data with the definition of the record types being:
Record type A: Type,member number,Surname,Firstname,Job,Balance
Record type B: Type,TransactionAmount
Write a program to: Read the data from the file and populate a data structure that looks like this:
%accounts = ( ’78’ => { ’surname’ => ’Feynman’, ’firstname’ => ’Richard’, ’job’ => ’Physics’, ’balance’ => -17.34, ’transactions => [ 7412.36, 2589.35, 95.32, 12.85, 789.68 ], }, ’89’ => { ’surname’ => ’Merx’, ... },
I have writen code to read the data in diff arrays but I dont know how to use the 'member number' as the key and also add the transationAmount from 2nd array to the addtional field of the 1st array.
use strict; use warnings; use Data::Dumper; use Fatal qw/ open close / ; my $data = "accounts.txt"; open (DAT, $data) or die "\"$data\" not existed or can't be opened!\n" +; my @accounts; my @transactionamount; my @fields1 = ( 'Type', 'member number', 'Surname', 'Firstname', 'Job', 'Balance', ); my @fields2 = qw/Type TransactionAmount/; my $fields1; my $fields2; my $values; while (<DAT>) { chomp; my @values = split(/,/); my %entry = map { $fields1[$_] => $values[$_] } ( 0..$#fields1 ); #print Dumper %entry; if ($entry{"Type"} eq 'B'){ my %transactionamount = map { $fields2[$_] => $values[$_] } ( +0..$#fields2 ); push @transactionamount, \%transactionamount; } else { push @accounts, \%entry; } } print Dumper @transactionamount;

In reply to read multiple record data and populate in a new data stucture by fseng

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.