#! /usr/bin/env perl use strict; use warnings; my %templates = ( url => 'http://something.com/api_stuff/%guid%' ); print format_template( url => guid => 1234 ); sub format_template { my $template_id = shift; my $template = $templates{$template_id}; my (%args) = @_; foreach (keys %args) { $template =~ s/%$_%/$args{$_}/; } return $template; }