Dezember 2009 Archive

Perl hat sich in den letzten Jahren dank aufregender neuer Technologien wie Catalyst, DBIx::Class und Moose erheblich weiterentwickelt (Modern Perl).

Leider ist die Installation der Modern Perl Module nicht ganz so einfach.

Daher habe ich zwischen den Jahren eine Modern Perl Live DVD basierend auf Ubuntu 8.04.3 LTS erstellt.

Features

  • Perl 5.10.1 und mehr als 4.500 CPAN Module vorinstalliert
  • Modern Perl Module wie Catalyst, DBIx::Class und Moose bereits installiert
  • Zahlreiche Editoren wie Padre mit zahlreichen Plugins und Eclipse mit EPIC-Plugin
  • Perl-Applikationen wie asciio bereits installiert
  • Softwareversionierung cvs, svn, git und bzr bereits installiert
  • Weitere Software kann mit den Standardwerkzeugen apt-get oder Synaptic einfach installiert werden

Modern Perl einfach ausprobieren

Das ISO-Image (1,2 GB) kann einfach mit VirtualBox oder VMware gestartet werden.

Alternativ lässt sich das ISO-Image auch auf eine DVD brennen. Anschließend den Rechner von der DVD booten und das Ganze einfach ausprobieren. Da es sich um eine Live-DVD handelt, wird nichts auf dem Rechner installiert.

Auf dem Desktop befindet sich eine README.txt-Datei, die sich per Doppelklick öffnen lässt und eine Anleitung und Beispiele enthält.

Screenshots

Ein Bild sagt bekanntlich mehr als 1.000 Worte.

Menü Entwicklung

Padre, asciio und Eclipse findet man Im Menü Anwendungen --> Entwicklung:

/2009/12/menu_entwicklung_klein.png

Padre

Aktuelle Padre Version

padre.png

mit zahlreichen Plugins

padre_plugin_klein.png

Eclipse 3.5.1 mit EPIC-Plugin

Aktuelle Eclipse Version mit EPIC

eclipse_klein.png

App::Asciio

Mit asciio lassen sich ASCII-Diagramme einfach erstellen:

asciio_klein.png

Feedback

Feedback, Bugreports, Änderungswünsche, Lob und Kritik bitte einfach als Kommentar oder E-Mail. Danke.

Siehe auch

Turnkey Linux bietet Ubuntu Linux Server Appliances, auf denen bekannte Perl-basierte Software bereits vorinstalliert ist.

List::Util von Graham Barr, das seit Perl 5.8.0 zu den Core-Modulen gehört, stellt eine Reihe von häufig gebrauchten Funktionen rund um Listen bzw. Arrays zur Verfügung.

Minimum, Maximum und Summe einer Liste

Die Funktionen min() und max(), liefern die kleinste bzw. größte Zahl einer Liste; sum() liefert die Summe aller Zahlen der Liste:

#!/usr/bin/perl 
use strict;
use warnings;

use List::Util qw/max min sum/;

my @zahlen = qw/ 5 10 15 20 42 25 30 4 35 17 2 8 13 /;

my $min = min(@zahlen);
my $max = max(@zahlen);
my $sum = sum(@zahlen);

print "Minimum: $min\n";
print "Maximum: $max\n";
print "Summe:   $sum\n";

Das Programm erzeugt folgende Ausgabe:

Minimum: 2
Maximum: 42
Summe:   226

Für Strings stehen die Funktionen maxstr() und minstr() zur Verfügung.

Mischen einer Liste

Die Funktion shuffle() vermengt die Element der Liste in zufälliger Reihenfolge:

#!/usr/bin/perl 
use strict;
use warnings;

use List::Util qw/shuffle/;

my @zahlen = qw/ 5 10 15 20 42 25 30 4 35 /;
print "Zahlen in Ursprungsreihenfolge:    @zahlen\n";

@zahlen = shuffle @zahlen;
print "Zahlen in zufaelliger Reihenfolge: @zahlen\n";

Das Programm erzeugt (z.B.) folgende Ausgabe:

Zahlen in Ursprungsreihenfolge:    5 10 15 20 42 25 30 4 35
Zahlen in zufaelliger Reihenfolge: 20 4 35 5 25 10 30 42 15

Das erste Element einer Liste, welches einem bestimmtem Kriterium entspricht

Die Funktion first() liefert das erste Element einer Liste, welches einem bestimmtem Kriterium entspricht:

#!/usr/bin/perl 
use strict;
use warnings;

use List::Util qw/first/;

my @zahlen = qw/ 5 10 15 20 42 25 30 4 35 /;

	# Erstes Element des Array zahlen, das groesser als 10 ist
my $first = first { $_ > 10 } @zahlen ;
print "First:   $first\n";

Das Programm erzeugt folgende Ausgabe:

First:    15

Reduce - Eine Liste auf einen einzelnen Wert reduzieren

Die Funktion reduce() erzeugt aus einer Liste einen einzelnen Wert.

Den beiden speziellen Variablen $a und $b wird im ersten Durchlauf von reduce() die ersten beiden Elemente der Liste zugeordnet. In jedem weiteren Lauf wird das Ergebnis des vorherigen Laufs der Variablen $a zugeordnet und das nächste Element der Liste der Variablen $b.

#!/usr/bin/perl 
use strict;
use warnings;

use List::Util qw/reduce/;

my @zahlen = qw/ 5 10 15 20 42 25 30 4 35 /;

{
	no warnings; # Keine Warnungen in diesem Block
	my $produkt = reduce { $a * $b } @zahlen;
	print "Produkt 1: $produkt\n";
	$produkt = 5 * 10 * 15 * 20 * 42 * 25 * 30 * 4 * 35;
	print "Produkt 2: $produkt\n";
}

Um die gut gemeinten Warnungen bzzgl. $a und $b zu unterdrücken, werden Warnungen innerhalb eines nackten Blocks begrenzt unterdrückt.

Das Programm erzeugt folgende Ausgabe:

Produkt 1: 66150000000
Produkt 2: 66150000000

MoreUtils

Weitere hilfreiche Tools für Listen stellen List::MoreUtils und List::AllUtils bereit.

Siehe auch:

Über dieses Archiv

Diese Seite enthält alle Einträge von Perl HowTo von neu nach alt.

November 2009 ist das vorherige Archiv.

Januar 2010 ist das nächste Archiv.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.