sub replace { my ($template_name, $params) = @_; my $template; { open my $fh, '<', $template_name or die("Unable to open template file \"$template_name\": $!\n"); local $/; $template = <$fh>; } $template =~ s/~~\$(.+?)~~/ if (exists($params->{$1})) { if (defined($params->{$1})) { $params->{$1} } else { warn("Template file \"$template_name\" references undefined variable $params->{$1}\n"); '' } } else { warn("Template file \"$template_name\" references non-existing variable $params->{$1}\n"); '' } /eg; print("$template\n"); } my %params = ( cell => ..., day_prev_month => ..., ); replace($template_name, \%params);