As long as all of your lines that are definitions start with whitespace, the following will work; this is because when the template wraps, it won't prefix the (wrapped) line with anything. This allows us to know what's a wrap, and what's not. No special handling of '=' signs needed.
use Config::General;
use Data::Dumper;
undef $/;
my $file = <DATA>;
$file =~ s/\n(\S)/ $1/g;
my $config = Config::General->new(-String=>$file);
print Dumper {$config->getall};
__DATA__
foo = Yes
bar = 0
blort =
home_url =
http://www.foo.com/some/really/long/url?foo=bar
Produces:
$VAR1 = {
'bar' => '0',
'boo' => '',
'blort' => '',
'foo' => 'Yes',
'home_url' => 'http://www.foo.com/some/really/long/url?foo=b
+ar',
};
perl -pe '"I lo*`+$^X$\"$]!$/"=~m%(.*)%s;$_=$1;y^`+*^e v^#$&V"+@( NO CARRIER'