theozh: Perl Rechnung in Regex

Beitrag lesen

Hallo Perl-Spezialisten,

in einem Text habe ich viele Zeitangaben in spitzen Klammern in Millisekunden, z.B. '<123456789>'. Diese wollte ich alle in Stunden:Minuten:Sekunden.Millisekunden, d.h. z.B. '(34:17:36.789)' umwandeln. Dabei wäre

xxx = Millisekunden

hh = (int(xxx/3600000))

mm = int((xxx - hh * 3600000)/60000)

ss = int((xxx - hh * 3600000 - mm * 60000)/60000)

nnn = xxx % 1000

Wenn man das nun alles ineinander einsetzt, ergibt sich ein sehr langer Ausdruck. Der Einfachheit und Übersicht halber im Folgenden mal nur auf die Extraktion von Stunden und Millisekunden reduziert. Ich hoffte, dass der folgende oder so ähnliche Code mit den Flags 'gse' die Ersetzung erledigen würde.

 my $Text =~ s!<(\d+)>!\(int($1/3600000):mm:ss\.$1%1000\)!gse

Das funktioniert leider so nicht. Sobald ich $1 mehrfach verwende gibt's eine Fehlermeldung.

Wer kann mir auf die Sprünge helfen? Danke, Theo.

akzeptierte Antworten