#!/usr/bin/perl use strict; use warnings; use Digest::MD5 qw( md5_hex ); while (my $xml = ) { $xml =~ s/(\d{11})/md5_hex($1)/eg; print $xml; } #### $xml =~ s/(\)(\d{11})(\<\/tag\>)/$1md5_hex($2)$3/eg; #### $xml =~ s/(\)(\d{11})(\<\/tag\>)/transformed($1,$2,$3)/eg; ... sub transformed { my ($prefix,$number,$suffix) = @_ return $prefix . md5_sum($number) . $suffix; }