PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : perl-script für ebay



az.
08-12-2004, 16:36
Also kurz ein paar Worte zum script:

Liest emails von nem IMAP-Server, durchsucht nach abgeschlossenen Transaktionen und schreibt dann die Daten in ein Formular zum korrigieren.

Nur wenn ich das ganze mit apache aufruf dann kommt nur der Text als solches. (cgis gehen mit html/form, dann input und rückgabe)

in der console mit perl wi.cgi ausgeführt kommt das raus (bsp):

spawn:/usr/lib/cgi-bin perl wi.cgi
Content-Type: text/html; charset=ISO-8859-1

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"><head><title>Eintrag prüfen</title>
</head><body><p>Artikelnummer: <input type="text" name="anr" value="4339328130" /></p><p>ebay-name: <input type="text" name="nick" value="dark_eldar" /></p></body></html>

und das in eine html-datei kopiert bringt auch das gewünschte ergebnis...


falls noch sonstige verbesserungsvorschläge da sind, bitte posten. das ganze hab ich eben letztes wochenende zusammengebastelt und es ist noch weit davon entfernt alles zu können, was es soll. macht euch über das kobe am besten keine gedanken, das is eben nen typ artikel der verkauft wird.

#!/usr/bin/perl -w

use CGI;
use Net::IMAP::Simple;

my $mailserver = new Net::IMAP::Simple ( "server" );
$mailserver -> login ( "name" , "passwort") or die "Konnte mich nicht anmelden : $!";
my $anzahl_mails = $mailserver -> select ("inbox");
my @eintrag = "";

#my $zaehler = 0;
foreach my $msg ( 1..$anzahl_mails ) {
# $zaehler = $zaehler +1;
$lines = $mailserver -> get ( $msg );
my @inhalt = @$lines;
foreach $zeile ( @inhalt ) {
if ( $zeile =~ /Subject:\sEnde\sder\seBay-Transaktion/ ) {
@eintrag = &textanalyse ( @inhalt );
&korrektur ( @eintrag );
}
}
}

sub korrektur {

my ( $anr, $nick, $email, $preis, $sk, $set, $name, $str, $ort ) = @_;
#print ($anr, $nick, $email, $preis, $sk, $set, $name, $str, $ort );
my $cgi = new CGI;

# CGI formular zum korrigieren

print $cgi->header(),
$cgi->start_html ("Eintrag prüfen"),
$cgi->p("Artikelnummer:", $cgi->textfield (-name=>"anr",-value=>"$anr")),
$cgi->p("ebay-name:", $cgi->textfield (-name=>"nick",-value=>"$nick")),
$cgi->end_html();
}

sub textanalyse {

# Variablen leeren
my $anr = "";
my $nick = "";
my $email = "";
my $name = "";
my $str = "";
my $plz = "";
my $ort = "";
my $sk = "";
my $preis = "";
my $set = "";

# eingabe übernehmen und analysieren
my @inhalt = @_;
foreach ( @inhalt ) {
if ( $_ =~ /Artikelnummer\s(\d+)\)/ ) { $anr = $1;}
if ( $_ =~ /.*name.*K=E4ufers:\s+(\w+)\s/ ) { $nick = $1; }
if ( $_ =~ /\s*E\-Mail\-Adresse.*K=E4ufers:\s+(.+)\s/ ) { $email = $1; }
if ( $_ =~ /\s*Name:\s+(\w+\s\w+)/ ) { $name = $1; }
if ( $_ =~ /\s*Stra=DFe:\s+(\w+\s*\w+)/ ) { $str = $1; }
if ( $_ =~ /\s*Ort:\s+(\d+\s*\w+)/ ) { $ort = $1; }
if ( $_ =~ /\s*Sofort\-Kaufen\-Preis:\s+EUR=A0(\d+,\d+)/ ) { $sk = 1; $preis = $1; }
if ( $_ =~ /\s*Artikelbezeichnung:.*KOBE/ ) { $set = "kobe"; }
}

# rückgabe durch Feld @eintrag
my @eintrag = ($anr, $nick, $email, $preis, $sk, $set, $name, $str, $ort );
return @eintrag;
}

az.
08-12-2004, 23:16
hat sich erledigt, der fehler lag im aufruf

ich habs mit /usr/lib/cgi-bin/wi.cgi aus ner html datei gestartet und da spricht man nicht den browser sondern das dateisystem an...

mit localhost/cgi-bin/wi.cgi gehts