in reply to
Re^5: How to split
in thread How to split
Adventures in regular expressions, part 7, readability
#!/usr/bin/perl --
use strict; use warnings;
use Data::Dump;
my $blah = ' VAR DS 0D
DC AL1(045),AL2(286),AL2(117),AL2(290)';
my ( $top, $bottom ) = split /[\r\n]+/, $blah;
print "$top\n";
#~ my( $prefix, @biscuits ) = grep length, split /[\s,]+/, $bottom;
#~ my( $prefix, @biscuits ) = split /(?:(?<!^)\s+)|,/, $bottom;
#~ my( $prefix, @biscuits ) = split /(?:(?<!^)\b\s+)|,/, $bottom;
#~ my( $prefix, @biscuits ) = split /(?:(?<!\A)\b\s+)|,/, $bottom;
#~ my( $prefix, @biscuits ) = $bottom =~ /(^\s+\S+)|([^\s\(]+\([^\s\)]
++\))/g;
#~ my( $prefix, @biscuits ) = $bottom =~ /(^\s+\S+|[^\s\(]+\([^\s\)]+\
+))/g;
#~ my( $prefix, @biscuits ) = $bottom =~ /(^\s+\S+|[^\s\(,]+\([^\s\)]+
+\))/g;
my( $prefix, @biscuits ) = $bottom =~ m{
( # $1
^\s+\S+ # prefix
|
[^\s\(,]+
\(
[^\s\)]+
\)
) # $1
}xsmg;
dd \$prefix, \@biscuits ;
for my $tack ( @biscuits ){
print "$prefix $tack\n";
}
__END__
$ perl shineon007
VAR DS 0D
(
\" DC",
["AL1(045)", "AL2(286)", "AL2(117)", "AL2(290)"],
)
DC AL1(045)
DC AL2(286)
DC AL2(117)
DC AL2(290)