# Partition a string into paragraphs based on a # pattern which matches the beginning of a paragraph. sub partition_para_beg { my ($pat, $str) = @_; $str = $_ unless defined $str; if ("" =~ /$pat/) { require Carp; Carp::croak("invalid pattern matches empty string: \"$pat\"\n"); } split /(?=$pat)/; } # Partition a string into paragraphs based on a # pattern which matches the end of a paragraph. sub partition_para_end { my ($pat, $str) = @_; $str = $_ unless defined $str; if ("" =~ /$pat/) { require Carp; Carp::croak("invalid pattern matches empty string: \"$pat\"\n"); } return $str =~ /(.*?(?:$pat)|.+)/gs; }