Du solltest Dich mal mit dem Thema "Quantifier" auseinandersetzen.
.* ist gierig und schnappt sich so viel wie eben möglich.
Damit schnappt sich das erste
.* soviel Text, so dass noch eben einmal Dein
<MeinTag>(.*)</MeinTag> und der Rest, der dahinter noch kommt, matchen kann...
Damit bleibt nur der Inhalt des letzten "MeinTag" übrig.
Vorschlag:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;
my $xml = <<EOF;
<foo>
<bar>1</bar>
<fb>xxx</fb>
<bar>2</bar>
<fb>xxx</fb>
<bar>3</bar>
</foo>
EOF
my @matches = $xml =~ m{<bar>(.*?)</bar>}mg;
print "@matches\n";
Mir ist noch nicht ganz klar, was konkret Du ersetzt haben willst...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!