Here's a slight variation on the three-fields-versus-four approach: if there are four fields, the fourth must be 'Y', which is true. (I use unshift instead of push for the @streams array because that gives the ordering of elements shown in the OPed example, which I take to be specificatory.)
c:\@Work\Perl>perl -wMstrict -MData::Dump -le "my (@streams, @spaces); ;; for my $result ( 'ws.abc.dsfsfsfwerfrwef std 13232', 'ws.dfsdferferfregregrgr std 99868 Y', 'ws.abc.asddwefewfewfewf std 45345', 'fwfrwfrefergegregerefds std 36754 Y', 'ws.abc.fferfergregrfreg std 45435', ) { my ($first, undef, undef, $fourth) = split m{ \s+ }xms, $result; if ($fourth) { unshift @streams, $first; } else { push @spaces, $first; } } ;; dd \@streams; dd \@spaces; " ["fwfrwfrefergegregerefds", "ws.dfsdferferfregregrgr"] [ "ws.abc.dsfsfsfwerfrwef", "ws.abc.asddwefewfewfewf", "ws.abc.fferfergregrfreg", ]
Update: One could also use the simple test @fields == 4 if split-ing to an array.
In reply to Re: Perl : Split/Regex
by AnomalousMonk
in thread Perl : Split/Regex
by sravs448
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |