@b=split(/\b(?=Title)/,$text); that should do it, split on the word boundary right vefore the Title
2008/12/24 Shlomi Fish <[email protected]>: > On Wednesday 24 December 2008, Peter Gordon wrote: >> Suppose I have the following code >> my $text =<<EOF; >> Title1 >> text1 >> text2 >> Title2 >> text3 >> text4 >> EOF >> >> @blocks = $text =~ m!(^Title\S+.*?)(?=^Title|\Z)!mgs ; >> >> The idea is to split the text into blocks. This code works, but the >> lookahead requires repeating part of the first half of the regex. >> >> Is there a shorter regex, without the repetition, that can do the same >> thing? > > Don't know about shorter, but you can extract the common string to a variable: > > {{{{{{{{{{{{{{{{ > #!/usr/bin/perl > > use strict; > use warnings; > > use Data::Dumper; > > my $text =<<'EOF'; > Title1 > text1 > text2 > Title2 > text3 > text4 > EOF > > my $delim = "^Title"; > > my @blocks = $text =~ m!($delim\S+.*?)(?=$delim|\Z)!gms ; > > print Dumper([...@blocks]); > }}}}}}}}}}}}}}}} > > A few notes: > > 1. You should always specify the delimiters of the here-doc explicitly. People > don't know off-hand if it's <<'EOF' or <<"EOF". > > 2. Someone I know recommends to sort the option characters for a Perl regex > alphabetically - like "gms" instead of "mgs". This facilitates searching for > them. > > Regards, > > Shlomi Fish > >> >> Peter >> >> _______________________________________________ >> Perl mailing list >> [email protected] >> http://perl.org.il/mailman/listinfo/perl > > > > -- > ----------------------------------------------------------------- > Shlomi Fish http://www.shlomifish.org/ > My Aphorisms - http://www.shlomifish.org/humour.html > > Shlomi, so what are you working on? Working on a new wiki about unit testing > fortunes in freecell? -- Ran Eilam > _______________________________________________ > Perl mailing list > [email protected] > http://perl.org.il/mailman/listinfo/perl > -- -- vish _______________________________________________ Perl mailing list [email protected] http://perl.org.il/mailman/listinfo/perl
