fileA: A AA ABC ADF BFD EFF ZFF ZZD fileB: exchangeA_groupA.gateway_risk=A 10 10 AA 10 10 ABC 10 10 ADF 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeA_groupB.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeA_groupC.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeB_groupA.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeB_groupB.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeB_groupC.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeC_groupA.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 ZZD 10 10 exchangeC_groupB.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeC_groupC.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeD_groupA.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 RFD 10 10 ZFF 10 10 exchangeD_groupB.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 exchangeD_groupC.gateway_risk=A 10 10 AA 10 10 ABC 10 10 EFF 10 10 MMM 10 10 NDB 10 10 RFD 10 10 ZFF 10 10 script: open IN, " 1} ; close IN; open IN, "){ if($line=~m/(exchange[BC]_groupA)\.gateway_risk=/){ print "in line $1:\n"; $line = $'; foreach $key (keys %fileA){ print "\tnot found $key\n" if !($line=~s/$key//); } } } close IN; result: in line exchangeB_groupA: not found BFD not found ADF not found ZZD in line exchangeC_groupA: not found BFD not found ADF #### Use of uninitialized value $sym8 in string eq at ./b.pl line 39, line 4. A exchangeB_groupA(ln4) not found A exchangeC_groupA(ln7) not found Use of uninitialized value $sym8 in string eq at ./b.pl line 39, line 40. ADF exchangeB_groupA(ln4) not found ADF exchangeC_groupA(ln7) not found Use of uninitialized value $sym8 in string eq at ./b.pl line 39, line 52. BFD exchangeB_groupA(ln4) not found BFD exchangeC_groupA(ln7) not found Use of uninitialized value $sym8 in string eq at ./b.pl line 39, line 88. ZZD exchangeB_groupA(ln4) not found