Hallo ihr beiden!
»» @Line = split(/\t/, $_);
»» if ($Line[0]=~ /\b$Search\b/) # hae!?Das ist ja Quatsch. Wenn du die Zeile so splittest, hast du ja schon alle Tabs rausgeschmissen und
kannst anhand derer nichts mehr überprüfen. Wenn der String also jetzt _genau_ mit dem gesuchten
String übereinstimmen soll, verwendest du einfach ein
if ($Line[x] eq $Search)
Richtig! Bislang bin ich (und Frank wohl auch) davon ausgegangen, daß Du etwas in folgender Form verwendest:
while (<DBASE>)
{
if (/(?<![^\t])$Search(?![^\t])/i)
{
&search;
}
}
Wenn Du jedoch nur die ersten fünf Spalten prüfen möchtest könntest Du auch wieder einen String bilden, in dem diese fünf Spalten mit einem Tab getrennt sind:
while (<DBASE>)
{
@Line = split(/\t/, $_);
$toTest = join(/\t/, @line[0..4])
if ($toTest =~ /(?<![^\t])$Search(?![^\t])/i)
{
&search;
}
}
btw. Um zu überprüfen, ob eine Variable gefüllt ist, verwendest du einfach "if ($var)", um zu überprüfen,
ob sie leer ist, verwendest du "if (!$var)". Das ist einfacher und imho aussagekräftiger.
Falsch! Oder besser: bedingt Richtig ... Der einstellige String '0' z.B. wird hierdurch als leer erkannt. Meistens möchte man aber wissen, ob gar kein Text enthalten ist. In diesem Falle muß man die Variable wohl oder übel mit einem leeren String vergleichen.
Gruß,
Jörk