1
2
3
4
5
6
7
8
9
30 Bratwürste
10 Schaschlik
10 kg Grillkohle
20 Liter Fassbier
10 Dosen Cola ExtraLight
1 Flasche Knurr Chilisoße
8 Zucchini
4 Paprika rot
10 Baguettes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
use 5.010; use strict; use warnings; use utf8; use Getopt::Long; use LWP::UserAgent (); # ------------- konfigurierbar -------------------------- my $url = "http://exammppl.ork/shop/kaufmich"; # URL an die gesendet wird my $field_name_1 = 'Ware'; # Feld des Formulars, das gefüllt wird # ------------------------------------------------------- my $filename = ""; my $verbose = 0; # Optionen der Kommandozeile einlesen GetOptions ("file=s" => \$filename, # string ) or die("Fehler in Argumenten der Kommandozeile\n"); my $fh; if (not open($fh, "<", "$filename") ) { # Datei öffnen die "Fehler: Datei '$filename' kann nicht zum Lesen geöffnet werden: $!\n"; } my @nochmals_bestellen = (); # für die Zeilen zu senden die nicht geklappt haben my $ua = LWP::UserAgent->new(timeout => 10); # WWW-Client zum Ansenden erzeugen my @lines = <$fh>; # Einkaufsliste aus Datei einlesen EINKAUFEN: while (scalar @lines) { # aus Einkaufsliste einlesen solange was drin ist $line = shift @lines; # Eine Zeile aus der Liste holen chomp $line; # Unnötiges Zeilenende aus Zeichenkette raus nehmen my $value = $line; # In ein Variable für später zum Absenden speichern my $res = $ua->post( $url, $field_name_1 => $value ); # nun den Wert zwecks Bestellung an Seite absenden # Prüfen, obs geklappt hat if ($res->is_success) { # wenn alles ok nach dem Senden, dann say "Yihaaa! Einkauf von $line getaetigt"; # zeige Fortschritt } else { push @nochmals_bestellen, $line; # was nicht gesendet werden konnte merken say "Upps! Einkauf von $line nicht geklappt"; # zeige welcher Einkauf nicht klappte warn $res->status_line, "\n"; # schimpfe den Fehler raus, den der server zurück hab } } if (scalar @nochmals_bestellen) { @lines = @nochmals_bestellen; @nochmals_bestellen = (); goto EINKAUFEN; }