Benjamins Blog

Artikel mit Tag perl

  • Blog
  • Themen
  • Fotografie
  • Sneaker
  • Kontakt
  • Impressum

Artikel mit Tag perl

Verwandte Tags
bücher coding fun informatik java latein mathematik php studium web 2.0
-01-
12
2009

Twitterbot in Perl

Perl war schon immer eine polarisierende Sprache. Die einen lieben sie, die anderen hassen sie. Die einen sind Fan der flexiblen Syntax, die anderen verfluchen die mangelnde Lesbarkeit. Sätze wie "Perl: Write once – never understand again" oder "Perl is the only language that looks the same before and after RSA encryption." zielen genau hierauf ab.

Dennoch ist Perl eine beliebte Skriptsprache, insbesondere im Unix/Linux-Bereich (dank erkennbarer Verwandschaft zu Unix-Tools/Sprachen wie C, awk oder Shell-Builtins) zur Systemadministration oder allgemein zur schnellen Problemlösung. Aber auch im Web und in vielen speziellen Einsatzgebieten wie zum Beispiel der (DNA-)Sequenzanalyse ist Perl weiterhin eine bedeutende Sprache. Aufgrund ihrer Mächtigkeit gilt Perl mancherorts als "Swiss Army Chainsaw of Programming Languages".
Natürlich sind mit Ruby, Python und diversen Java-Derivaten viele neue Skriptsprachen auf den Markt gekommen, und Perl 6 lässt (leider) weiterhin auf sich warten.

Trotzdem bin ich weiterhin ein großer Freund dieser Sprache. Allerdings muss ich zugeben, dass ich etwas voreingenommen bin – Perl war mit die erste "richtige" Programmiersprache, mit der ich in Kontakt kam (dann kam die damals weniger richtige Sprache PHP).

Die Vorlesung Skriptsprachen und Anwendungen bei den Mathematikern hat dafür gesorgt, mein Interesse für Perl wieder etwas zu beleben und ein kleines Projekt in Angriff zu nehmen. Als Resultat entstand ein kleiner Bot, der täglich den Mensaplan der Uni Ulm abgrast und die Ergebnisse bei Twitter veröffentlicht. So besteht nicht nur die Möglichkeit, durch das Folgen des Bots bei Twitter täglich über die Tageskarte informiert zu werden, sondern es entsteht quasi als "Abfallprodukt" ein bisher nicht existenter RSS-Feed.

Das kleine Projekt zeigt sehr schön, wie man mithilfe der mächtigen CPAN-Module in Perl alltägliche Aufgabe sehr effizient und straight forward lösen kann. Zum Parsen der HTML-Seite, die als Quelle benutzt wird, wird das Paket XML::LibXML benötigt. Hiermit lassen sich per XPath direkt die interessanten Inhalte extrahieren. Die leichtgewichtige Twitter-Library Net::Twitter::Lite sorgt zudem für eine einfach Twitter-Anbindung:

#!/usr/bin/perl
use strict;
use DateTime;
use Net::Twitter::Lite;
use XML::LibXML;

#Get date
my $today = DateTime->today();
die "No working day!\n" if($today->day_of_week()>5);

#Fetch url and load document as DOM tree
my $url = sprintf("http://www.uni-ulm.de/mensaplan/%04d-%02d-%02d.html",$today->year, $today->month,$today->day);
my $doc = XML::LibXML->new()->parse_html_file($url) or die "Error while fetching/parsing document!\n";

#Gather all list entries and extract mealtype and actual meal
my @meals = $doc->findnodes('//div[@class="meal"]');
my @tweets;
foreach (@meals)
{
	my ($mealtype, $meal) = ($_->find('./div[@class="mealtype"]'),$_->find('./div[@class="item"]'));
	$meal =	(length($meal)+length($mealtype) > 138 ? substr($meal,0,136-length($mealtype)).".." : $meal);
	push(@tweets, $mealtype.": ".$meal);
}
die "Error while fetching meals!\n" if(length(@tweets) == 0);

#Login to twitter and post entries in reverse order 
my $nt = Net::Twitter::Lite->new(username => 'username', password => '...', clientname => "MensaBot",source => "web") or die "Error during twitter login procedure!\n";
$nt->update("="x 40);
foreach (reverse(@tweets))
{
	my $result = $nt->update($_);
}
$nt->update("Mensaplan Uni Ulm am ".$today->day.".".$today->month.".".$today->year.":   #uni #ulm #uulm #mensa #mensaplan");
exit;


Zugehöriger Crontab-Eintrag, wobei 1-5 für Werktage steht und 0 10 für 10:00 Uhr:
0 10 * * 1-5 /path/to/script.pl

Hiermit wird das Skript regelmäßig zu den gewünschten Zeiten ausgeführt.
Geschrieben von Benjamin Erb am 01.12.2009 in Programmierung Kommentar: (1) Trackbacks: (0)
Tags für diesen Artikel: coding, perl, studium, web 2.0
-25-
08
2007

Kamelbuch

Nun besitze ich es endlich auch, das echte Kamelbuch

Im Regal bekommt es natürlich einen Sonderplatz, direkt neben den PHP-Büchern...

An dieser Stelle nochmal vielen Dank an die Person, die es mir geschickt hat!
Geschrieben von Benjamin Erb am 25.08.2007 in Programmierung Kommentare: (0) Trackbacks: (0)
Tags für diesen Artikel: bücher, coding, perl
-28-
05
2007

Negative Modulodivisionen in verschiedenen Programmiersprachen

Trotz vieler (zum Teil existenzieller) Unterschiede haben aktuelle Programmiersprachen doch eine breite Basis an grundlegend übereinstimmenden Funktionalitäten und Konventionen. Dies gilt insbesondere für die mathematischen Bibliotheken - könnte man meinen. Als ich kürzlich ein kleines Perl-Script in Java neuschreiben wollte, wurde ich jedoch eines Besseren belehrt. Konkret ging es um den Modulo-Operator (der den Rest einer ganzzahligen Division angibt) im Zusammenhang mit einen negativen Dividenden. Während in Perl -1 mod 7 = 6 ergab, wollte mir Java das Ergebnis des Terms als -1 angeben.
Hier mal eine kleine Liste der Ergebnisse in unterschiedlichen Programmiersprachen:
Perl: 6
Python: 6
Ruby: 6
PHP: -1
JavaScript: -1
Java: -1
Pascal: -1
.NET: -1
C++: -1

Grund dafür ist übrigens die Existenz zweier Methoden zur Berechnung - einer "mathematischen" und einer symetrischen.
Soviel zu Standards...
Geschrieben von Benjamin Erb am 28.05.2007 in Programmierung Kommentare: (2) Trackbacks: (0)
Tags für diesen Artikel: coding, java, mathematik, perl, php
-23-
03
2007

Lingua romana informaticae utilis est.

#!/usr/bin/perl -w 
use Lingua::Romana::Perligata; 
# my @array = (1,2,3); 
da meo arrayis I tum II tum III. 
arraya scribe egresso. 
# my %hash=(key1=>1,key2=+>2) 
meo hashibus key1 tum I tum key2 tum II da. 
hashus scribe egresso.


Coniungendo: Lingua::Romana::Perligata ad CPAN scriptoremque .
Geschrieben von Benjamin Erb am 23.03.2007 in Lustiges, Programmierung Kommentare: (0) Trackbacks: (0)
Tags für diesen Artikel: coding, fun, informatik, latein, perl
« vorherige Seite   (Seite 1 von 1, insgesamt 4 Einträge)   nächste Seite »

Über den Autor

Benjamin Erb Benjamin Erb ist 24 Jahre alt und studiert an der Universität Ulm Medieninformatik.

Aktuelle Projekte

  • diretto.org
  • IOException.de

Quicklinks

  • Meine Amazon-Wishlist
  • Mein PGP-Schlüßel
  • twitter.com/b_erb
  • facebook.com/benjamin.erb

Blogroll

  • Davids Blog
  • Flos Warteschleife
  • stk bloggt.es
  • guido.demelo.de
  • Sina paints her life
  • Malte Wittkugel.net
  • Marcus bloggt.es
  • claus bloggt.es
  • floBLOG
  • Basti in Japan
  • Sven in Frankreich

Sneaker-Blogroll

  • tomat3.de
  • sneakerb0b.de
  • vEnoMaZn
  • sneakerized.com
  • welovesneaker.com

Kalender

Zurück September '10
Mo Di Mi Do Fr Sa So
    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      

Getaggte Artikel

acm aesthetic computing animation apache blog bücher c++ ccc coding context free data visualization datenschutz dd-wrt design design pattern diretto eclipse fachschaft fail fotos fun gadget gdg handy hardware hip-hop homepage imaging informatik information design italien java javascript joggen kiosk system laptop latein latex mail mathematik mozilla musik mysql netbook nike af1 nike air max nmap perl pgp php politik postgresql privacy processing progwerkstatt psychologie ravensburg rivoli rutenfest s9y samsung q25 sneaker sneaker photography software sopra spanien sport sql studium studivz svn tagato trac trainingscamp typografie ubiquitous computing ubuntu ulm usability user interfaces videos virtualisierung vnc web web 2.0 welfen wikipedia wishlist xslt zivildienst

Archive

September 2010
August 2010
Juli 2010
Das Neueste ...
Älteres ...

Kategorien

  • XML Allgemeines (33)
  • XML Fotos (33)
  • XML Homepage (6)
  • XML Italien (7)
  • XML Lustiges (25)
  • XML Musik (11)
  • XML Nachdenkliches (9)
  • XML Schuhe (24)
  • XML Sonstiges (3)
  • XML Sport (5)
  • XML Videos (2)
  • XML Design (18)
  • XML IT (20)
  • XML Hardware (16)
  • XML Open-Source (7)
  • XML Programmierung (41)
  • XML Studium (61)
  • XML Web (30)
  • XML Datenschutz (6)
  • XML Usability (13)

Alle Kategorien

Feeds

XML RSS 2.0 feed
ATOM/XML ATOM 1.0 feed
XML OPML 1.0 feed

Statistiken

Letzter Artikel: 01.06.2010 16:01
242 Artikel wurden geschrieben
123 Kommentare wurden abgegeben

Verwaltung des Blogs

Login
 

© 2002 - 2010 Benjamin Erb