Не уверен, что здесь происходит с разделителем входных записей, и использование разбиения недопустимо, если не используется неявное $_
.
Чтобы ответить на вопрос, используйте!
оператор для отрицания смысла совпадения:
@dataRecord = grep { ! /__Data__|^$/ } @dataRecord;
В этом случае !
также можно заменить на not
:
@dataRecord = grep { not /__Data__|^$/ } @dataRecord;