素人スマソ、生理的に嫌かもしれませんが

$dummy = '/^';
$dummy .= join'$/ || /^',@list2;
$dummy .= '$/';
@list3 = grep(eval $dummy,@list1);
@list4 = grep(!eval $dummy,@list1);