http://www.perlmonks.org?node_id=993410


in reply to Re^3: How to split
in thread How to split

Adventures in regular expressions, part 4

#!/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; dd \$prefix, \@biscuits ; for my $tack ( @biscuits ){ print "$prefix $tack\n"; } __END__ $ perl shineon004 Use of uninitialized value $tack in concatenation (.) or string at shi +neon004 line 20. Use of uninitialized value $tack in concatenation (.) or string at shi +neon004 line 20. Use of uninitialized value $tack in concatenation (.) or string at shi +neon004 line 20. Use of uninitialized value $tack in concatenation (.) or string at shi +neon004 line 20. Use of uninitialized value $tack in concatenation (.) or string at shi +neon004 line 20. VAR DS 0D ( \" DC", [ undef, undef, "AL1(045)", undef, ",AL2(286)", undef, ",AL2(117)", undef, ",AL2(290)", ], ) DC DC DC AL1(045) DC DC ,AL2(286) DC DC ,AL2(117) DC DC ,AL2(290)

Replies are listed 'Best First'.
Re^5: How to split
by Anonymous Monk on Sep 13, 2012 at 08:03 UTC

    Adventures in regular expressions, part 5

    #!/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; dd \$prefix, \@biscuits ; for my $tack ( @biscuits ){ print "$prefix $tack\n"; } __END__ $ perl shineon005 VAR DS 0D ( \" DC", ["AL1(045)", ",AL2(286)", ",AL2(117)", ",AL2(290)"], ) DC AL1(045) DC ,AL2(286) DC ,AL2(117) DC ,AL2(290)

      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)