in reply to Perl : Split/Regex
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.
|
|---|