in reply to looking for speed!! large file search and extract

I see no reason to

I'd just do

while(<FH>) { push @required, $_ if /^abcde.*partname$/; }
or, if that's all you do with those lines:
while(<FH>) { print C if /^abcde.*partname$/; }