www.foo.com www.bar.com www.dj.com www.abc.com www.def.com www.ghij.com www.zyx.com www.wvut.com www.srqpon.com #### www.foo.com www.bar.com www.dj.com www.bar.com www.dj.com www.music.com www.abc.com www.good.com www.def.com www.ghij.com www.bad.com www.zyx.com www.wvut.com www.srqpon.com #### use strict; my $file1 = "data1.txt"; my $file2 = "data2.txt"; my $raw_data1 = Slurp_File($file1); my $raw_data2 = Slurp_File($file2); my (@sections1) = ($raw_data1 =~ m/()/sig); my (@sections2) = ($raw_data2 =~ m/()/sig); my %parsed_file; foreach my $section (@sections2) { my ($id,@parsed_data) = Parse_Section($section); foreach my $alias (@parsed_data) { $parsed_file{$id}{$alias}++; } } foreach my $section (@sections1) { my ($id,@parsed_data) = Parse_Section($section); foreach my $alias (@parsed_data) { if (!$parsed_file{$id}{$alias}) { print "HostID: $id, Host-Alias: $alias was missing from file '$file2'\n"; } } } ############ sub Slurp_File { my $file = shift; my $data; open(DATA,"<",$file) || die "Unable to open file '$file': $!\n"; { local $/; $data = ; } close(DATA); return $data; } sub Parse_Section { my $data = shift; my ($id) = ($data =~ m/id=\"(.+?)\"/i); my (@alias) = ($data =~ m/host-alias>(.+?)## HostID: bobjones, Host-Alias: www.foo.com was missing from file 'data2.txt'