#!/usr/bin/perl
use strict; # https://perlmonks.org/?node_id=11112811
use warnings;
my $input = <<ENDOFSTRING;
beginning a bend
before stuff
begin
one
begin
three
end
five
end
after stuff
beginning a bend
ENDOFSTRING
print $input, '-' x 70, "\n";
my $level = 0;
my $nested = $input =~ s/(\bbegin\b)|(\bend\b)|./
( $1 && $level++, $level ? $& : '', $2 && $level--)[1] /gesr;
print "$nested\n";
Outputs:
beginning a bend
before stuff
begin
one
begin
three
end
five
end
after stuff
beginning a bend
----------------------------------------------------------------------
begin
one
begin
three
end
five
end
|