use strict; use warnings; my $string = < $oldind ) { $lines[$i-1] .= " {"; push @levels, $ind; } elsif( $ind < $oldind ) { while( $levels[-1] > $ind ) { pop @levels; $lines[$i-1] .= "\n"." "x$levels[-1]."}"; } } } while( $levels[-1] > $levels[0] ) { pop @levels; $lines[-1] .= "\n"." "x$levels[-1]."}"; } print join "\n", @lines, "\n";