use strict;
use warnings;
my $regex = qr/ ([^,]+) (?=\Z|,) /x;
my $var = 'abcd,ef,,ghijkl,mnop';
print "$1\n" while $var =~ /$regex/g;
####
18:27 >perl 827_SoPW.pl
abcd
ef
ghijkl
mnop
18:27 >
####
use strict;
use warnings;
my $var = 'abcd,ef,,ghijkl,mnop';
my @matches = split /,/, $var;
$_ && print "$_\n" for @matches;