my $contents = qq( create item "xxx" { remove entry "xxx" add entry "yy" "xxx" { item1=xxxx, item2=xxxx, } add diffenent entry "xxx" { item1=xxx, item2=xxxx, item3=xxx add subitem { item1=xxx, item2=xxx, item3=xxx } add subitem { item1=xxx, item2=xxx, } } another type { item1=xxx } with "xxx" } ); #### # I remove the C-style comments prior to this my @lines = split(/\n/,$list); my $level = 0; for (@lines) { print "$level:$_\n"; $level++ if /\{/; $level-- if /\}/; }