Werte aus Tab getrennter Datei auslesen - Spalte hinzufügen
Benedikt Hermann
- perl
Hallo,
ich hab absolut keine Ahnung von Perl und hab nun ein Script bekommen welches aus einer Tab getrennten Datei Werte ausliest.
Es werden neben einigen Werten auch eine Beschreibung welche in der 6. Spalte der Datei steht ausgelesen.
Nun möchte ich nach der 6. Spalte noch eine Spalte einfügen aus der die Beschreibung dann gelesen wird. Das hat den Sinn, dass es eine deutsche und eine englische Beschreibung geben soll.
Wie funktioniert das ?
Was muss ich ändern ?
require ('cgi-lib.pl');
parse_form;
$Search =$ENV {'QUERY_STRING'};
$Search =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$Search =~ s/&x//gi;
@Sucher = split (/=/, $Search);
$Search = $Sucher[1];
$zaehler= "0";
open (DBASE, "mappe.txt") || die "Kann File nicht oeffnen:$!";
print "Content-type: text/html","\n\n";
print "<HTML>", "\n";
print "<HEAD><TITLE>Ihr Suchergebnis</TITLE>\n";
print "</HEAD>", "\n";
print "<BODY bgcolor="#e9e9e9">";
print "<table align="center"width="500" cellpadding="0" cellspacing="0">\n";
print "<tr><td><font face="Verdana,Arial,Helvetica,Sans Serif" color="#000000" size="2">Ihr Suchergebnis:</font><br></td></tr> \n";
print "<tr><td>\n";
while (<DBASE>)
{
@Line = split(/\t/, $_);
$a='%2F';
$b='/';
#$Search =~ /$a/$b/g;
if ($Search=~ /[^0-9]/)
{
#print "$Line[1]";
if (lc($Line[1]) eq lc($Search))
{
$zaehler++;
&search;
last;
}
}
elsif (lc($Line[1]) == lc($Search))
{
$zaehler++;
&search;
last;
}
if ($Search=~ /[^0-9]/)
{
#print "$Line[1]";
if (lc($Line[2]) eq lc($Search))
{
$zaehler++;
&search;
last;
}
}
elsif (lc($Line[2]) == lc($Search))
{
$zaehler++;
&search;
last;
}
if ($Search=~ /[^0-9]/)
{
#print "$Line[1]";
if (lc($Line[3]) eq lc($Search))
{
$zaehler++;
&search;
last;
}
}
elsif (lc($Line[3]) == lc($Search))
{
$zaehler++;
&search;
last;
}
}
close(DBASE);
if ($zaehler == '0')
{
print "<font face="Verdana,Arial,Helvetica,Sans Serif" color="#000000" size="2"><br><br><b>Leider nichts gefunden</b></font><br>\n";
}
print "</td></tr></table>\n";
print "</BODY></HTML>\n";
sub search
{
if ($Line[5] ne 'leer')
{
print "<font face="Verdana,Arial,Helvetica,Sans Serif" color="#000000" size="2"><br><b>$Line[5]</b></font><br>\n";
}
if ($Line[6] ne 'leer')
{
print "<font face="Verdana,Arial,Helvetica,Sans Serif" color="#000000" size="1"> <b>Preis APRO (in Euro):</b> $Line[6]</font><br>\n";
}
if ($Line[7] ne 'leer')
{
print "<font face="Verdana,Arial,Helvetica,Sans Serif" color="#000000" size="1"> <b>Lieferzeit (in Wochen):</b> $Line[7]</font><br>\n";
}
if ($Line[9] ne 'leer')
{
print "<font face="Verdana,Arial,Helvetica,Sans Serif" color="#000000" size="1"><br><br><img src="/img2/$Line[9]"></font>\n";
}
last;
} #Ende SUB
Hej Benedikt,
zunächst einmal verstehe ich nicht, warum der Inhalt der "restlichen" Zeilen auf 'leer' abgeprüft wird. Hier ist 'leer' als Wort und nicht als Sinnbild zu sehen *grübel*.
Ich denke, das was Du haben willst, soll so aussehen (nur unterer Teil):
sub search
{
if ($Line[5] ne '')
{
print "<font face="Verdana,Arial,Helvetica,Sans Serif" color="#000000" size="2"><br><b>$Line[5]</b></font><br>\n";
}
if ($Line[6] ne '')
{
print "<font face="Verdana,Arial,Helvetica,Sans Serif" color="#000000" size="2"><br><b>$Line[6]</b></font><br>\n";
}
}
Dann kommen die Beschreibungen allerdings untereinander. Sollen sie nebeneinander sein, z.B. in einer Tabelle, müßte man alles etwas umbauen.
Hoffe, geholfen zu haben ;o),
Marko