open(my $dtg_file, "<", $infile) or die "Unable to open $infile: $!\n"; while(<$dtg_file>) { chomp; my ($dtg,@files) = split /:/; $dtgs{$dtg} = \@files; } close $dtg_file; #### sub remove_from_dtgs { my ($dtg,$file) = @_; my @files = grep {$_ ne $file} @{$dtgs{$dtg}}; if(@files == 0) { delete $dtgs{$dtg}; } else { $dtgs{$dtg} = \@files; } }