#!/usr/bin/perl use strict; use warnings; # user input: my $regexp='^http://www.example.com/(\d+)/([a-z]+.zip)$'; my $template='https://secure.foobar.lan/fetch?file=$2&id=$1&missingValue=$3'; # data my $url='http://www.example.com/12345/foo.zip'; # actual program my @array=($url=~/$regexp/); my $result=$template; do { no warnings 'uninitialized'; $result=~s/\$(\d+)/$array[$1]/ge; }; print "'$url' rewritten to '$result'\n";