use Tie::DATA;
foreach(keys %DATA)
{
print "$_ = $DATA{$_}\n";
}
__DATA__
__foo__
yadda yadda yadda...
__bar__
ee-aye ee-aye oh
__baz__
woof woof
####
use Tie::DATA(':xml'); # predefined format
foreach(keys %DATA)
{
print "$_ = $DATA{$_}\n";
}
__DATA__
yadda yadda yadda...
ee-aye ee-aye oh
woof woof
##
##
use Tie::DATA (
sub{ ... }, # parse key/values from DATA
sub{ ... } # process pairs
);
...
__DATA__
...
##
##
[foo]
baz bar etc
##
##
baz bar etc
##
##
#define foo
baz bar etc
##
##
##
##
use Tie::DATA qr(<<<<<<<<(\w*?)>>>>>>>>);
use Tie::DATA sub{split(/\s*:SEGMENT\s+(\w+)\s*/, shift);}
use Some::Mad::Parser;
use Tie::DATA \&Some::Mad::Parser::parse;
##
##
use Tie::DATA(':ini', 'proc_kv');
foreach(keys %DATA)
{
print "$_ = $DATA{$_}\n";
}
# our processing function, checks for
# and removes processing hints in our keys
# (see __DATA__)
sub proc_kv
{
my ($k, $v) = @_;
if($k =~ /:/)
{
my ($tag, $hint) = split(/:/, $k);
$k = $tag;
if($hint eq 'nowhitespace')
{
$v = ...
}
else
{
$v = ...
}
}
return($k,$v);
}
__DATA__
[foo:nowhitespace]
yadda yadda yadda...
[bar]
ee-aye ee-aye oh
[baz]
woof woof
##
##
use My::Big::Routine;
use Tie::DATA(':ini', 'My::Big::Routine::go');
foreach(keys %DATA)
{
print "$_ = $DATA{$_}\n";
}