How about an alternation in the look-ahead? I also made the capture non-greedy.
johngg@shiraz:~/perl/Monks > perl -Mstrict -Mwarnings -E ' open my $cmdFH, q{<}, \ <<EOD or die $!; BSS <blah blah> SSID: <ssid> <blah blah> BSS <blah blah> SSID: <ssid2> <blah blah> BSS <blah blah> SSID: <ssid3> <blah blah> EOD my $out = do { local $/; <$cmdFH>; }; my @ssids = $out =~ m{SSID: (.*?)(?=(?:^BSS|\z))}smg; say qq{--<$_>--} for @ssids;' --<<ssid> <blah blah> >-- --<<ssid2> <blah blah> >-- --<<ssid3> <blah blah> >--
I hope this helps.
Cheers,
JohnGG
In reply to Re: more elegant way to parse this?
by johngg
in thread more elegant way to parse this?
by morgon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |