#!/usr/bin/perl -w use strict; use Text::Balanced qw(extract_codeblock); for ( '{ $h{x} = "}" }', '{ $h{s} = "}" }', '{ $h{s} = 1; print "{oops}" }', '{ $h{m} = "}" }', '{ $h{y} = "}" }', '{ $h{tr} = "}" }', '{ $h{qq} = "}" }', '{ $h{qr} = "}" }', '{ $h{qw} = "}" }', '{ $h{qx} = "}" }', ){ my ($e,$r) = extract_codeblock $_; print "Code: $_\nExtracted: $e\nRemainder: $r\n\$\@: $@\n\n"; }