#!/usr/bin/perl use strict; use warnings; my $text = ' a b c d a b c d hallo'; my $trace = $text; my $offset = 0; $text =~ s{(a)}{substitute($1)}ge; print ">>$text\n"; sub substitute { my ($vorher) = @_; my $nachher = 'aa'; substr($trace, $offset + $-[0], length($vorher), $nachher); print ">$trace\n"; $offset += length($nachher)-length($vorher); return $nachher; }