A solution that doesn't use the second file, but builds the property table while reading the first file. This assumes that all required properties are present somewhere in the first file.
use strict; use warnings; my %properties; my @computers; while (<DATA>) { chomp; next if ! length; push @computers, $_; while (<DATA>) { chomp; last if ! length; push @{$properties{$_}}, $computers[-1]; } } for my $computer (@computers) { my @missing = grep {! grep {$_ eq $computer} @{$properties{$_}}} k +eys %properties; $computer = [$computer, [@missing]]; } print join "\n", map {"$_->[0]: @{$_->[1]}"} @computers; __DATA__ Computer1 KB893756 KB896423 KB899588 KB899591 KB921883 Computer2 KB893756 KB896422 KB896423 KB899591 KB917159 KB921883 Computer3 KB893756 KB896422 KB899588 KB899591 KB917159 KB921883
Prints:
Computer1: KB896422 KB917159 Computer2: KB899588 Computer3: KB896423
Note: computer one's data was edited slightly from OP's data so that it misses two properties.
In reply to Re: Finding out what computer does NOT have certain data
by GrandFather
in thread Finding out what computer does NOT have certain data
by Sunnmann
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |