#!/usr/bin/perl -w use strict; my $datas = {}; my %types; ##open needed files to use in program open(NAMES, "file1.csv") or die "Can't open NAMES file: $!\n"; open(TYPES, "file2.csv") or die "Can't open TYPES file: $!\n"; open(INFO, "file3.csv") or die "Can't open INFO file: $!\n"; # Process INFO while (){ chomp; my ($unused_col, $type_name, $name_col) = split(/,/, $_, 3); $types{$type_name} = undef; # We never knows from this table where # these fields are linked from? } close INFO; # Process NAMES while (){ chomp; my ($name_id, $c_name) = split(/,/, $_, 2); $datas->{$name_id} = {'c_name' => $c_name } # provided the id is unique } close NAMES; # Process TYPES while (){ chomp; my ($type_id, $name_id, $type_name) = split(/,/, $_, 3); push @{$datas->{$name_id}->{'type_name'}}, $type_name; # Not sure if we have to test the existence of the type. # Can't hurt too much (and avoid undesired autovivification?) $types{$type_name}++ if exists $types{$type_name}; } close TYPES; # Not seen output print "Not seen:\n"; foreach (keys %types){ print "$_\n" unless $types{$_} } # Names count print "Names total count:\n"; foreach (keys %{$datas}){ print $datas->{$_}->{'c_name'} . ": " . scalar(@{$datas->{$_}->{'type_name'}}) . "\n"; }