Du befindest dich hier: FSI Informatik » Informationen » linuxkurs » Aufgabensammlung » Mensaskript   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung
informationen:linuxkurs:aufgabensammlung:mensa [26.08.2016 06:27] – vorkurs => linuxkurs tomabrafixinformationen:linuxkurs:aufgabensammlung:mensa [18.10.2016 15:01] rudis
Zeile 3: Zeile 3:
  
 <code> <code>
-#! /usr/bin/perl -w+#!/usr/bin/perl
  
 +use v5.12;
 use strict; use strict;
-use integer+use warnings
-use Term::ANSIColor;+use utf8;
  
-use Date::Format; +use open qw( :std :locale );
-my $time = time; +
-if ($#ARGV >= 0) { +
- $time += $ARGV[0] * 86400; +
-+
-my $date = time2str("%d\\.%m\\.", $time);+
  
-my @pars = split(/\n\s*\n/m, `w3m -dump http://www.studentenwerk.uni-erlangen.de/verpflegung/de/sp-er-sued.shtml`);+use HTML::TreeBuilder (); 
 +use WWW::Mechanize ();
  
-my @result = grep { /${date}/ } @pars; 
  
-$"\n\n";+my $URL 'http://www.werkswelt.de/?id=sued';
  
-print @result; 
-print "\n"; 
  
 +sub get_food {
 +    my ($html) = @_;
 +
 +    foreach my $line (split /\n/, $html) {
 +        next unless $line =~ /^Speiseplan <br>/;
 +
 +        $line =~ m{<h4>(.+?)</h4>} or die;
 +        say $1;
 +
 +        while ($line =~ m{(Essen \d+)</br>(.+?)</br>}g) {
 +            my $food = $1;
 +            my $name = $2;
 +
 +            $name =~ s{<sup>.+?</sup>}{}g;
 +            $name =~ s{\s+}{ }g;
 +            say "  $food: $name";
 +        }
 +    }
 +}
 +
 +my $mech = WWW::Mechanize->new;
 +
 +$mech->get($URL);
 +get_food($mech->content);
 +
 +for (my $i = 0; $i < 2; $i++) {
 +    my $next = $mech->current_form->find_input(undef, 'submit', 3);
 +    $mech->click_button(input => $next);
 +    get_food($mech->content);
 +}
 </code> </code>
  
-Dieses //Perl//-Skript lädt mit Hilfe des Programms ''w3m'' den Mensaspeiseplan aus dem Internet und filtert mit einem //regulären Ausdruck// (wie //grep//!) den aktuellen Tag heraus.+Dieses //Perl//-Skript lädt den Mensaspeiseplan aus dem Internet und filtert mit einem //regulären Ausdruck// (wie //grep//!) den aktuellen Plan heraus.
  
 Sinnvollerweise sollte das Script als ''mensa'' im Verzeichnis ''~/bin'' gespeichert werden und so wie oben ausführbar gemacht werden (Rechte!). Nun kannst du jeden Tag mittels ''mensa'' den Mensa-Speiseplan anschauen. Sinnvollerweise sollte das Script als ''mensa'' im Verzeichnis ''~/bin'' gespeichert werden und so wie oben ausführbar gemacht werden (Rechte!). Nun kannst du jeden Tag mittels ''mensa'' den Mensa-Speiseplan anschauen.