#!/usr/bin/perl # vi:ts=4 sw=4 et: use strict; use warnings; #> global variables #> ---------------------------------------------------------------------------- use vars qw( $str $what $for $pos $last $cnt ); $str = 'aasdf asdlfa dasf'; # welcher string soll bearbeitet werden $what = 'a'; # was suchen wir $for = 'xxx'; # womit wollen wir es ersetzen $pos = 2; # das wievielte auftauchen soll ersetzt werden #> main script #> ---------------------------------------------------------------------------- ( $last, $cnt ) = ( 0, 0 ); # initialisiere counter # solange wir das gesuchte finden while ( $last > -1 ) { # ermittle position(en) des gesuchten $last = index($str, $what, $last); # ende der schleife, wenn nix mehr gefunden; # oder erhoehe den trefferzaehler $last == -1 ? last : $cnt++; # ersetze in $str das auftreten von $what mit $for # wenn die gezaehlten treffer $cnt der gewuenschten anzahl $pos # entsprechen substr($str, $last, length($what), $for) if ( $cnt == $pos ); $last++; } print $str, $/;