perl - variableninhalt nur bis trennzeichen ausgeben

frey

Ensign
Registriert
Juni 2002
Beiträge
232
servus miteinander :)

ich habe folgendes problem: ich lese via perl eine sql datenbank aus...ein datensatz sieht folgendermaßen aus: "aaa - bbb" ... ich will nun nur das vor dem strich ausgeben...wie mach ich das? habe mir schon diverse dinge zur split funktion durchgelesen, habs aber damit irgendwie net hinbekommen...

danke schonmal :)
 
Zum Beispiel mit regulären Ausdrücken:
Code:
#!/usr/bin/perl
$_ = "aaa - bbb";
if (/^([^-]+)/) {
  print $1;
} else {
  print $_;
}
Der Ausdruck ^([^-]+) sucht alle Zeichen am Anfang von $_, die nicht "-" sind, in diesem Fall also "aaa ". Die Klammern sorgen dafür, daß die gefundene Zeichenkette gespeichert wird (sog. Backtracking), danach kannst du auf den gespeicherten Werten über $1 zugreifen.
Wenn die "Wörter" auch "-" enthalten können (bspw. "aa-a - b-bb - c-c-c"), paßt das Suchmuster natürlich nicht mehr, dann müßtest du sowas nehmen:
Code:
#!/usr/bin/perl
$_ = "a-aa - bb-b - c-c-c";
if (/^(.+?) - /) {
  print $1;
} else {
  print $_;
}
In diesem Fall werden alle Zeichen vor dem ersten Vorkommen von " - " gesammelt und gespeichert.

greetings, Keita
 
Zurück
Oben