#!/usr/bin/env perl use strict; use warnings; my $Indent = 0; my $Blank_Lines = 0; my $Open = qr/[{\[(]$/; my $Close = qr/^[}\])]/; while (<>) { s/^\h*//; $Blank_Lines++, next if m/^$/; my $Comment = m/^#/; $Indent-- if m/$Close/ and not $Comment; $Blank_Lines = 0, print "\n" if $Blank_Lines; print "\t" x $Indent, $_; $Indent++ if m/$Open/ and not $Comment; }