I'm not sure where the "ROCKER ARM ASSEMBLIES AND GROUPS" is coming from, but if I understand what you're trying to do, I think you might be over complicating it.
Something like this should work:
#! /usr/bin/perl
use strict;
use warnings;
my $serialNumbers = $ARGV[0];
my $partNumbers = $ARGV[1];
my @line;
my %partNumber;
open (my $fileTwo, "<", $partNumbers);
while (<$fileTwo>)
{
chomp;
$partNumber{$_} = 1;
}
open (my $fileOne, "<", $serialNumbers);
while (<$fileOne>)
{
@line = split (":", $_);
print STDERR "$_" if exists $partNumber{$line[0]};
}
I hope that helps.