Since, despite my prodding, you have not provided an SSCCE here is one which uses Test::More and sample data, demonstrating that the filter works.
use strict;
use warnings;
use Test::More tests => 1;
my $out = filter ();
my $want = qq#GREPME>>,xxxxx,BP5,2017-11-27_22:36:57,xxxxx,BP5,ADVANCE
+D_COMPRESSION,TABLE_COMPRESSION,101189,count,DBA_TABLES,SAPABW,/BIC/D
+1002562,,"ENABLED","OLTP",\n#;
is ($out, $want);
sub filter {
my @save = (<DATA>);
my $keep = '';
foreach (@save){
$_ = "" unless ($_ =~ m/"ENABLED","OLTP",/ && $_ =~ m/^GREP/ )
+;
$_ = "" if ($_ =~m/SYSMAN/|| m/SYS/);
if ($_) {
$keep = $_;
last;
}
}
return $keep;
}
__DATA__
GREPME>>,xxxxx,BP5,2017-11-27_22:36:57,xxxxx,BP5,ADVANCED_COMPRESSION,
+TABLE_COMPRESSION,101189,count,DBA_TABLES,SYS,/BIC/D1002561,,"ENABLED
+","OLTP",
GREPME>>,xxxxx,BP5,2017-11-27_22:36:57,xxxxx,BP5,ADVANCED_COMPRESSION,
+TABLE_COMPRESSION,101189,count,DBA_TABLES,SAPABW,/BIC/D1002562,,"ENAB
+LED","OLTP",
GREPME>>,xxxxx,BP5,2017-11- 27_22:36:57,xxxxx,BP5,ADVANCED_COMPRESSION
+,TABLE_COMPRESSION,101189,count,DBA_TABLES,SAPABW,/BIC/D1002566,,"ENA
+BLED","OLTP",
GREPME>>,xxxxx,BP5,2017-11-27_22:36:57,xxxxx,BP5,ADVANCED_COMPRESSION,
+TABLE_COMPRESSION,101189,count,DBA_TABLES,SYS,/BIC/D100256P,,"ENABLED
+","OLTP",
There are clearly things to be improved here - there's no point matching against both /SYS/ and /SYSMAN/ for example - but the concept of an SSCCE and the value of it should be informative.
Please remember to put your data as well as your code within <code> tags when posting here.