seth: globales suchen und ersetzen mit ausgabe

gudn tach!

ich weiss nicht, _wie_ ich nach der problemloesung suchen soll. deswegen frage jetzt mal hier nach.

gegeben sei ein string $str, bei dem mit hilfe der regulaeren ausdruecke $findRE und $replaceRE gewisse teilzeichenketten global ersetzt werden sollen. soweit so gut, das liesse sich mit

eval('$str=~s/'.$findRE.'/'.$replaceRE.'/g');

bewerkstelligen.

jetzt sollen aber noch zusaetzlich alle aenderungen (also alle gefundenen zeichenketten und ihre substitute) auf dem bildschirm ausgegeben werden. tja, aber wie geht das gescheit?

ich habe mir zwar eine loesung dazu ueberlegt, aber die ist eigentlich viel zu umstaendlich, doof und gefaellt mir nicht:

  
my $str_new='';  
my $found_str;  
my $len;  
my $old_pos=0;  
my $after_matched;  
while($str=~/$findRE/g){  
  $found_str=$&;  
  $after_matched=$'; # wird nur am schluss benoetigt  
  $len=length($found_str);  
  $str_new.=substr($str, $old_pos, pos($str)-$len-$old_pos);  
  $old_pos=pos($str);  
  print 'orig: '.$found_str."\n";  
  eval('$found_str=~s/'.$findRE.'/'.$replaceRE.'/');  
  print 'new:  '.$found_str."\n";  
  $str_new.=$found_str;  
}  
$str=$str_new.$after_matched;

da gibt's doch bestimmt ganz tolle elegante perl-wege fuer, oder?

prost
seth