#!/usr/bin/perl -w #Markus Westphal 09.10.2006 ###################################################### # Markus Westphal Swissprot (neu) # ###################################################### use strict; #use CGI::Carp qw(fatalsToBrowser); my($rock,$h,$ht,$html,$slz,$wert,$zeilen,$zeile1,$zeile2,$auswert,$sprot,$i,$j,$k,$g,@ar,@outline,@lines,$s,$lesen,$zw,$searchline,@searchlines,$outformat,$vw,$vw2,$sl,$ol,$of,$format,$za,$htm,@posaus); #Einlesen aus Browserübergabe #$ENV{'QUERY_STRING'} =~ s/sl=alle//g; #$ENV{'QUERY_STRING'} =~ s/ol=alle//g; #$ENV{'QUERY_STRING'} =~ s/%3A/,/g; #$ENV{'QUERY_STRING'} =~ s/%3B/;/g; #$ENV{'QUERY_STRING'} =~ s/+/\ \/g; #@ARGV = split("&",$ENV{'QUERY_STRING'}); #HTML Header #print HF "Content-type: text/html\n\n"; #HTML Header #globale Variabeln füllen $ol = ""; $rock = 0; $html = 0; $outformat = 0; $sl = ""; $za = 0; $auswert = 0; $wert="ö"; for($j = -1; $j < $#ARGV; $j++) { if($ARGV[$j] =~ /^sl/) { ($sl, $searchline) = split("=", $ARGV[$j]); @searchlines = split(",", $searchline); } if($ARGV[$j] =~ /^ol/) { ($ol, $zeilen) = split("=", $ARGV[$j]); @outline = split(",", $zeilen); } if($ARGV[$j] =~ /^se/) { ($s, $wert) = split("=", $ARGV[$j]); } if($ARGV[$j] =~ /^of/) { ($of, $format) = split("=", $ARGV[$j]); if($format eq "hor") { $outformat = 1; } } if($ARGV[$j] =~ /^html/) { ($ht, $htm) = split("=", $ARGV[$j]); if($htm eq "on") { $html = 1; } } } if($html == 1) { open(HF, ">ausgabe.htm") || die ("Die Ausgabedatei kann nicht erstellt werden!\n"); print HF '

Auswertung:

'; print HF ''; print HF "Swissparse - Markus Westphal - FH Gießen-Friedberg\n"; print HF "\n"; } open(TF, ">sp-out.txt") || die ("Die Ausgabedatei kann nicht erstellt werden!\n"); if($ol =~ /ol/) { $auswert = 1 ; } if($ol =~ /ol/ && $sl =~ /sl/) { $auswert = 2; } if($wert=~ /ö/) { $auswert = 3; $wert = "KEIN WERT!"; } #print "$ol\n $sl\n $wert \n $auswert\n"; #eventuell erweitern auf sprot48.dat Zugriff aus Internet $sprot = "sprot48.dat"; open(F, "<$sprot") || die ("$sprot kann nicht gelesen werden!\n"); $i=0; if($html == 1){print HF "Suchwert: $wert
";} #print TF "Suchwert: $wert\n"; while() { chomp($_); # Wenn Steuerbefehl am Ende, dann wegschneiden if ($_ =~ /^ID/i) {$lesen=1;} # ^ -> startet mit ID if ($lesen == 1) { if ($_ =~ /^\/\//) #Einzelteile enden mit // deshalb $lesen=0 { if (&IsString($ar[$i], $wert) == 1){ $i = $i+1; $lesen = 0; } else { $ar[$i] = ""; } } else { #ACHTUNG INTERNETVERSION! if($html ==1){$h = "
\n";} else{$h = "\n";} if($_ =~ /^ /) { $_ =~ s/^ /SQ/g; $ar[$i] .= $_ . $h; #Wird im Array unter dem $i Feld abgelegt } else { $ar[$i] .= $_ . $h; #Wird im Array unter dem $i Feld abgelegt } } } } close (F); if($html == 1){print HF "$wert wurde in $i Records gefunden! (Suchzeilen nicht beruecksichtigt!)";} #print TF "$wert wurde in $i Records gefunden! (Suchzeilen nicht beruecksichtigt!)\n"; if($auswert == 3) { if($html == 1) { print HF "
KEIN SUCHWERT EINGEGEBEN!\n"; print HF "
name.pl?se=Suchwert&sl=Suchzeile&ol=Ausgabezeile&of=Format [hor/ver]\n"; print HF "
Bitte die angegebene Syntax einhalten!\n\n
"; } die ("Lesevorgang abgebrochen!\n"); } else { for($j=0; $j<=$#ar; $j++) # $#ar -> Anzahl Felder in Array { if(&IsString($ar[$j], $wert) == 1) { if($auswert == 1) { &IsZeil($ar[$j]); } elsif($auswert == 2) { if(&SuchZeil($ar[$j]) == 1) { $slz++; &IsZeil($ar[$j]); } } else { &PrintRec($ar[$j]); } } } } sub IsString() #erweiter mit NOT { my ($a, $b) = @_; if($a=~ /$b/i) { if($a =~ /SUBCELLULAR LOCATION:.*membrane/i) { return(0); } elsif($a =~ /LOCATION: .*matrix/i) { return(0); } return(1); } return(0); } sub PrintRec() { my ($a) = @_; if($html == 1){print HF "

$a

\n";} print TF "$a\n"; } sub IsZeil() { my($z) = @_; @lines = split( "\n" , $z); #ACHTUNG INTERNETVERSION! #print ">>$z"; undef($posaus[$i]); for($k = 0; $k < $#lines; $k++) { for($i = 0; $i <= $#outline; $i++) { $zw = $outline[$i]; if($lines[$k]=~ /^$zw/) { if($outformat == 1) { &AusgabeHF($lines[$k],0); } else{&PrintRec($lines[$k]);} } } } if($outformat == 1) { &AusgabeHF("",1); } else { if($html == 1){print HF "---------------------------------------------
\n";} print TF "/-$rock-/\n"; $rock++; } } sub SuchZeil() { my($z) = @_; @lines = split( "\n" , $z); for($k = 0; $k < $#lines; $k++) { for($i = 0; $i <= $#searchlines; $i++) { $zw = $searchlines[$i]; if($lines[$k]=~ /^$zw/) { if(&IsString($lines[$k],$wert) == 1){return (1);} } } } return 0; } #Htmlausgabe sub AusgabeHF() { $za = $za+1; my($t,$line) = @_; my($st); if($za == 1) { #open(HF, ">ausgabe.htm") || die ("Die Ausgabedatei kann nicht erstellt werden!\n"); print HF ''; print HF "\n"; for($g = 0; $g <= $#outline; $g++) { print HF ""; } print HF "\n"; } if($line == 0) { #Erstellen der Strings für die Anzahl der Felder und zuordnen nach @outline for($i = 0; $i <= $#outline; $i++) { if($t =~ /^$outline[$i]/) { $st = substr($t,2,length($t)); $posaus[$i] .= "

$st

\n"; } } } elsif($line == 1) { printf HF "\n"; for($i = 0; $i <= $#outline; $i++) { print HF '\n"; undef($posaus[$i]); } print HF "\n"; } } #Ende Html-Seite #if($outformat == 1) #{ if($html == 1) { print HF "

$outline[$g]\n

',"\n"; print HF "$posaus[$i]"; print HF "
"; print HF "\n"; close (HF); } else{close(TF);} #}