Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Fail to update an array in HoAoA

by Fang (Pilgrim)
on Jul 20, 2005 at 07:43 UTC ( [id://476397]=note: print w/replies, xml ) Need Help??


in reply to Fail to update an array in HoAoA

There are multiple logical design errors in the flow of your program. One of them is that you assign an arrayref to $hoa{$key} while you want it to be an arrayref itself, so you have to push your data in that array like push @{hoa{$key}}, [ @aoa ]. This assignment is also misplaced, as it will push an empty arrayref in case the line from <DATA> doesn't match any of the pattern you mentionned (/^\s+/ won't match an empty line by the way, /^$/ will).

Here's some code that will produce what you want. You may look at that solution (among others, as always) directly, or try and correct your code a bit by yourself first.

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $key; my %hoa; while ( <DATA> ) { chomp; next if (/^$/); if ( /^SET/ ) { $key = (split)[1]; # perldoc -f split } elsif (/^\d/) { push @{$hoa{$key}}, [ split /,/ ]; # perldoc -f split } } print Dumper \%hoa ; __DATA__ SET: SET1 0,100,BOOK 1,150,PENCIL ==== SET: SET2 2,110,ERASER 2,200,PEN 0,220,BLACKBOARD 1,300,CHALK ====

Update: updated explanations a bit, small updates to the code.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (5)
As of 2024-04-23 07:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found