Thread replace nth occurence: Code verstehen (16 answers)
Opened by Student87 at 2013-03-10 11:04

Student87
 2013-03-13 11:14
#166344 #166344
User since
2012-11-08
73 Artikel
BenutzerIn
[default_avatar]
Mit "Funktion" meint ihr "subroutine", oder?

Code: (dl )
1
2
3
4
5
6
my $s =~ s/(sneak)/replace_third($1)/eg;
sub replace_third {
my $match = shift;
my $i;
if (++$i == 3) {return "replacement string"} else {return "$match"}
}


So ginge es denk ich mal nicht, weil $i immer neu definiert werden würde. Muss ich also alles in die sub verlagern bis auf $i, und $i als extra Variable der sub mit-übergeben?:

Code: (dl )
1
2
3
4
5
6
7
my $i;
my $s =~ s/(sneak)/replace_third($1, ++$i)/eg;

sub replace_third {
my ($match, $i) = @_;
if ($i == 3) {return "replacement string"} else {return "$match"}
}


Kann man ++$i an eine sub übergeben? Weil wenn ich erst in der sub inkrementiere, wird ja nicht ausserhalb der sub inkrementiert ... ?
Last edited: 2013-03-13 11:15:09 +0100 (CET)

View full thread replace nth occurence: Code verstehen