use strictures 1;
our $VERSION = '0.005_04'; # VERSION
sub sformat {
my ($class, $string) = splice @_, 0, 2;
return '' unless defined $string and length $string;
my %vars = (homedir => $ENV{HOME}, @_);
my $rpl = sub {
my ($orig, $match) = @_;
return $orig unless defined $vars{$match};
ref $vars{$match} eq 'CODE'
? $vars{$match}->($match, $orig, $vars{$match})
: $vars{$match};
};
my $re = qr/(%([^\s%]+)%?)/;
$string =~ s/$re/$rpl->($1,$2)/ge;
$string;
}
1;