use Spreadsheet::ParseExcel::Simple; my (%milestones, %taskID); my $xls = Spreadsheet::ParseExcel::Simple->read('milestones.xls'); foreach my $sheet ($xls->sheets) { while ($sheet->has_data) { my @data = $sheet->next_row; next if $data[0] =~ m/ID/; next if $data[0] eq ''; my @tasks = split(",", $data[1]); foreach my $task (@tasks) { $milestones{$data[0]} = [ @tasks ]; } } } my $xls = Spreadsheet::ParseExcel::Simple->read('TaskLists.xls'); foreach my $sheet ($xls->sheets) { while ($sheet->has_data) { my @data = $sheet->next_row; next if $data[0] =~ m/ID/; next if $data[0] eq ''; my @tasks = @data[2..3]; $taskID{$data[0]} = [ @tasks ]; } } foreach my $milestone (keys %milestones) { my @tasks = @{ $milestones{$milestone} }; foreach my $task (@tasks) { print "milestone = $milestone, id = $task, start = @{ $taskID{$task} }[0], stop = @{ $taskID{$task} }[1]\n"; } } exit;