Splitten von |xxx|zzz|a, b, x|uuuu|
Andrea
- perl
0 Cheatah
Hallo,
Weiß jemand wie ich eine "gemixte" Datenzeile korrekt splitten kann?
Beispiel:
michaelmichael@aol.defeld1, feld2, feld3Betreff:xxx
-> entspricht z.B.($msender,$msenderemail,$mfields,$msubject)
Bei meinem Versuch stimmt irgendwas nicht (sorry, bin Anfänger)
sodass zwar alle Feldnamen übertragen werden, aber nur der
Feldinhalt des ersten Feldes. Bei den anderen wird nix übertragen.
Wie kann ich das korrigieren?
*************************************************************
open (MESSAGE, "message.db");
@message = <MESSAGE>;
close(MESSAGE);
$messageline = ($message[0]);
chomp($messageline);
($msender,$msenderemail,$mfields,$msubject) = split(//, $messageline);
@mfield = split /,/, $mfields;
chomp $mfield[-1];
...
sub mail_message {
open (MAIL, "$mailprogram -t ") die "Can't open $mailprog!\n";
print MAIL "To: $FORM{'email'}\n";
print MAIL "From: $msenderemail ($msender)\n";
print MAIL "Subject: $msubject\n\n";
if (@mfield) {
foreach $mfield (@mfield)
{print MAIL "$mfield: $FORM{$mfield}\n";}
}
close (MAIL);
}
*****************************************
Bin dankbar für jeden Tip!
Gruß,
Hi,
michaelmichael@aol.defeld1, feld2, feld3Betreff:xxx
@mfield = split /,/, $mfields;
hiernach hast Du @mfield = (
'feld1',
' feld2',
' feld3')
^ Beachte!
Also vergiß beim Split nicht \s* als mögliche Leerzeichen.
chomp $mfield[-1];
Warum nicht einfach vorher chomp $mfields? Nebenbei dürfte da eigentlich kein Umbruch drinstehen, da Du ja die Zeile an $/ getrennt gelesen hast (ja, hast Du *g*) und chomp auch nur mit $/ arbeitet.
Cheatah