Perl String kürzen

xeno

Moderator
Mitarbeiter
An die Perl-Profis hier... ich bin nämlich nicht mal Anfänger ;):

Hab hier ein pop2imap-Script, welches sich an einer Mail verschluckt, die im Header sowas hier hat:

Sun, 18 Nov 2012 18:34:38 +0100 (Westeurop▒ische Normalzeit)

Ich würde diesen String ($date) gerne beschneiden, und zwar immer beim Pluszeichen 5 Stellen weiter. Oder sowas in der Art. Also alles nach der Zeitzone soll weg.

$neuerstring = ...?

Wer mag mir da mal eben ein Snippet hinwerfen?
 

lookshe

Member of Honour
Code:
#!/usr/bin/perl

$date = "Sun, 18 Nov 2012 18:34:38 +0100 (Westeuropäische Normalzeit)";
print "vorher: $date\n";
$date =~ s/(^[^+]*+.....).*$/$1/;
print "danach: $date\n";

Code:
vorher: Sun, 18 Nov 2012 18:34:38 +0100 (Westeuropäische Normalzeit)
danach: Sun, 18 Nov 2012 18:34:38 +0100

/Edit:

Natürlich könnte man die entscheidende Zeile auch verkürzen, sofern Leerzeichen und öffnende Klammer nur dort vorkommen:
Code:
$date =~ s/ \(.*$//;
 

xeno

Moderator
Mitarbeiter
Perfekt. Magst du mir das noch um "-****" erweitern? Mir fiel grad ein, daß es ja auch negative Werte da gibt ;).
 

lookshe

Member of Honour
Code:
$date =~ s/(^[^+-]*+.....).*$/$1/;
Und wie sieht es bei keiner Änderung aus? Steht da dann +0000?
 
Oben