Du befindest dich hier: FSI Informatik » Informationen » linuxkurs » Aufgabensammlung » Mensaskript (Übersicht)
Mensaskript
Schreiben wir nun ein etwas praktischeres Script:
#!/usr/bin/perl use v5.12; use strict; use warnings; use utf8; use open qw( :std :locale ); use HTML::TreeBuilder (); use WWW::Mechanize (); my $URL = 'http://www.werkswelt.de/?id=sued'; my @color = ("\e[31m","\e[33m","\e[32m"); my $color_reset = "\e[m"; sub get_food { my $idx = shift; my ($html) = @_; foreach my $line (split /\n/, $html) { next unless $line =~ /^Speiseplan <br>/; $line =~ m{<h4>(.+?)</h4>} or die; say "$color[$idx]$1$color_reset"; while ($line =~ m{(Essen \d+)</br>(.+?)</br>}g) { my $food = $1; my $name = $2; $name =~ s{<sup>.+?</sup>}{}g; $name =~ s{\([\d\w,]+\)}{}g; $name =~ s{\s+}{ }g; say " $color[$idx]$food:$color_reset $name"; } } } my $mech = WWW::Mechanize->new; $mech->get($URL); get_food(0,$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($i+1, $mech->content); }
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.