Danke für Eure rasche Rückmeldungen.
@"DerMartin", ja, umgekehrt ist es sicher eleganter, doch ich dachte, ich müsste das als geschlossenen Ausdruck in der Regex einbinden. Aber ja, man kann einfache Rechnungen in einer Regex erledigen.
Wenn es allerdings komplexer wird hilft wohl nur eine eigene Funktion. Vielen Dank @"Google weiß alles" für den Tipp!
Folgender Code erfüllt meinen Zweck.
my $Text =~ s!<(\d+?)>!&ConvertMilliseconds($1)!gse;
sub ConvertMilliseconds {
my $xxx = shift;
my $nnn = $xxx % 1000;
$xxx /= 1000;
my $ss = $xxx % 60;
$xxx /=60;
my $mm = $xxx % 60;
$xxx /=60;
my $hh = $xxx;
return sprintf("(%02d:%02d:%02d.%03d)",$hh,$mm,$ss,$nnn);
};