in reply to Data Structures Help

I'll to preface this with saying that the output is not EXACTLY in the format that you want...But it is readable, and the program does appear to work. I'm just a simple Perl hacker...With a little bit of elbow grease (which I don't necessarily know how to apply), this could become what you're looking for.

#!/usr/bin/perl -wT use strict; use Data::Dumper; my $roomtype; my $dim; my $count; my %output; while (<DATA>) { chomp; # If the first character of the input is a letter, then we're on a n +ew # room type if (/^[a-zA-Z]+/) { $roomtype = $_; $dim = undef; } else { $dim = join('_', split / /); } if (defined($roomtype) && defined($dim)) { my $room = $roomtype . '_' . $dim; if (defined($output{$room})) { my $cur = $output{$room}; $cur++; $output{$room} = $cur; } else { $output{$room} = 1; } } } my $data = Data::Dumper->new([\%output], [qw/*output/]); print $data->Dump; __DATA__ office 1 120 120 120 120 140 135 155 135 120 120 bedroom 2 100 75 100 75 120 180

And the output:

$ ./window.pl %output = ( 'bedroom 2_120_180' => 1, 'office 1_120_120' => 3, 'bedroom 2_100_75' => 2, 'office 1_155_135' => 1, 'office 1_140_135' => 1 );