Sonntag, 30. Dezember 2007

Perl 5.10: use feature Stackable File Tests

Stackable File Tests ist eines der neuen Features von Perl 5.10.

Beispiel:

Perl 5.8.8


use strict;
use warnings;

my $file = 'some.file';

if ( -f $file and -w _ and -z _ ) {
unlink $file;
}

Perl 5.10.0

use strict;
use warnings;
use 5.010;

my $file = 'some.file';

if ( -f -w -z $file ) {
unlink $file;
}

Es ist zwar nur syntaktischer Zucker, aber ich finde es lesbarer und daher erwähnenswert.


Vorhergehende Artikel von mir zu den neuen Features in Perl 5.10:

Open Source Gruppe bei LinkedIn

Es gibt jetzt auch eine Open Source Gruppe bei LinkedIn:

http://www.linkedin.com/e/gis/43875/2F68734FCC3A


via: Is there any group for Open Source Community?

Perl 5.10: Vier Mikroartikel zu den neuen Features von Gábor Szabó

Gábor Szabó (Perltraining Israel) hat vier lesenswerte Mikroartikel zu den neuen Features von Perl 5.10 in seinem Blog veröffentlicht:


via: What's new in Perl 5.10 - 4 micro articles

Samstag, 29. Dezember 2007

Perl 5.10: use feature qw/state/;

Eines der neuen Features von Perl 5.10 ist die vereinfachte Erzeugung statischer bzw. persistenter Variablen.

Während man bisher closures verwenden musste, um statische Variablen zu erzeugen, gibt es jetzt in Perl 5.10 das feature state.

Beispiel:

Perl 5.8.8


use strict;
use warnings;

{ ## Start of closure
my $counter = 0;
sub next_counter {
$counter++;
return $counter;
}
} ## End of closure

for ( 1 .. 5 ) {
print next_counter() ,"\n";
}

Warum $counter, die persistente Variable, hier nur ein einziges Mal initialisiert wird, also nur einmal auf Null gesetzt wird, ist für Einsteiger (und auch einige Profis) meist nur sehr schwer bis gar nicht zu verstehen. Hinweis: Subroutinen sind global im aktuellen Namensraum (Package).

Perl 5.10.0

use strict;
use warnings;
use feature qw/say state/;

sub next_counter {
state $counter = 0;
$counter++;
return $counter;
}

for ( 1 .. 5 ) {
say next_counter();
}

Die persistente Variable $counter ist jetzt als statisch gekennzeichnet und befindet sich in der Subroutine und nicht außerhalb in einem Block. Das ist doch viel lesbarer, einfacher zu verstehen und zu warten.

state funktioniert so ähnlich wie my, die Variable wird jedoch erst bei der ersten Verwendung initialisiert und nicht schon bei der Deklaration.

Weiterhin benötigt state wesentlich weniger Hauptspeicher als die closure-Version.

state-Variablen können auch in tief verschachtelten Schleifen oder Subroutinen verwendet werden wie der folgende Pseudocode verdeutlichen soll:

for my $x ( 1 .. 5 ){
for my $y ( 1 .. 5 ) {
state %seen;
next if $seen{$x}{$y}++;
}
}


Die neuen Features von Perl 5.10 werden aus Gründen der Rückwärtskompatibilität nicht automatisch geladen, sondern müssen explizit wie folgt eingebunden werden:

Entweder bestimmte Features, hier state und say, einbinden

use feature qw/say state/;

oder alle neuen Features verwenden

use feature qw/:5.10/;


Vorhergehende Artikel von mir zu den neuen Features in Perl 5.10:

Freitag, 28. Dezember 2007

Perl 5.10: use feature qw/say/;

Zum Auftakt einer Reihe über die neuen Features ein kurzer Artikel über say().

say() funktioniert wie print, es wird jedoch automatisch ein Newline, bzw. das für die jeweilige Plattform passende Zeilenende, angehängt.

Ein einfaches Beispiel:

Perl Version 5.8.8


use strict;
use warnings;
print "Hallo Welt\n";

Perl Version 5.10.0

use strict;
use warnings;
use feature qw/say/;
say "Hallo Welt";


say() spart nicht nur einige Anschläge auf der Tastatur,

print some_function() , "\n";
say some_function();

sondern wird hoffentlich auch folgenden Einsteigerfehler verhindern:

print some_function() , "\n"; # Listenkontext
print some_function() . "\n"; # skalarer Kontext


Die neuen Features von Perl 5.10 werden aus Gründen der Rückwärtskompatibilität nicht automatisch geladen, sondern müssen explizit wie folgt eingebunden werden:

Entweder bestimmte Features, hier say, einbinden
qw/say/;

oder alle neuen Features verwenden
qw/:5.10/;



That's it.

Perl 5.10.0 parallel zu einem bestehendem Perl installieren

Wer die vielen neuen und coolen Features von Perl 5.10. ausprobieren möchte, kann das neue Perl parallel zu einem bestehendem Perl installieren.

Nachfolgend zwei kurze Anleitungen für Windows bzw. Linux.

Vorbemerkung:
Bitte nicht den Pfad zu Perl 5.10 in die systemweite Umgebungsvariable PATH aufnehmen. Perl 5.10 ist nicht binärkompatibel zu früheren Perlversionen. Auch CPAN-Module müssen i.d.R. neu installiert werden. Wer zwei oder mehr Perlversionen auf seinem System (hoffentlich kein Produktionssystem) installiert hat, sollte stets wissen, welche Version er/sie gerade aufruft.

Ein aktuelles Backup des Systems kann auch nicht schaden.


Installation für Linux-Systeme:

Ziel: Perl 5.10.0 soll parallel zu dem bestehenden Perl 5.8.8 in das Verzeichnis /opt/perl510 installiert werden.


cd /tmp

wget http://www.perl.com/CPAN/src/perl-5.10.0.tar.gz

tar -xzf perl-5.10.0.tar.gz

cd perl-5.10.0/

vi README

perldoc INSTALL

./Configure -des -Dprefix=/opt/perl510

make

make test

sudo make install

Jetzt sollten zwei verschiedene Perl-Versionen auf dem System vorhanden sein:

/usr/bin/perl -v

This is perl, v5.8.8 ...

/opt/perl510/bin/perl -v

This is perl, v5.10.0 ...

CPAN-Module können nun wie folgt installiert werden:

/opt/perl510/bin/perl -MCPAN -e shell

Für Perl 5.10 muss also stets der volle Pfad angegeben werden.

#!/opt/perl510/bin/perl
use strict;
use warnings;


Installation Activestate Perl für Windows:

Ziel: Perl 5.10.0 soll parallel zu dem bestehenden Perl 5.8.8 in das Verzeichnis C:\perl510 installiert werden.

  • ActivePerl-5.10.0.1001 downloaden und den MSI-Installer aufrufen.

  • Als Installationsort C:\perl510 angeben.

  • Die Optionen "Add Perl to the PATH enviroment variable" und "Create Perl file extension" abwählen.


Jetzt sollten zwei verschiedene Perl-Versionen auf dem System vorhanden sein:

C:\> perl -v

This is perl, v5.8.8

C:\> C:\perl510\bin\perl.exe -v

This is perl, v5.10.0

CPAN-Module können nun wie folgt installiert werden:

C:\> C:\perl510\bin\ppm.bat

Wem die von ActiveState angebotenen Packages nicht ausreichen, kann das ActivePerl 10xx Win32 PPM packages Repository verwenden:

C:\> C:\perl510\bin\ppm.bat install http://cpan.uwinnipeg.ca/PPMPackages/10xx/package.ppd

Für Perl 5.10 muss also stets der volle Pfad (C:\perl510\bin\...) angegeben werden.


That's it.

Donnerstag, 20. Dezember 2007

ack - das bessere grep für Programmierer und Sysadmins

ack von Andy Lester ist ein kleines Tool, das man als fast 100%-igen Ersatz für grep verwenden kann.

Zusätzlich hat es einige nützliche Features für Programmierer, die regelmäßig große Mengen an Quelltexten durchsuchen müssen.

Wer grep kennt, kommt mit ack sehr schnell zurecht.

Hier ein paar Unterschiede, die mir sehr gut gefallen:


  • ack durchsucht Verzeichnisse per default rekursiv und ignoriert bestimmte Verzeichnisse und Dateitypen.
    Statt:

    $ grep pattern $(find . | grep -v .svn)

    geht es viel einfacher so:

    $ ack pattern


  • ack ist in der Lage, nur nach bestimmten Dateitypen zu suchen, wobei sogar die Shebang-Zeile berücksichtigt wird.
    Statt:

    $ grep pattern $(find . -name '*.pl' -or -name '*.pm' -or -name '*.pod' | grep -v .svn)

    geht es viel einfacher so:

    $ ack --perl pattern


  • ack unterstützt die regulären Ausdrücke und Spezialvariablen von Perl:

    ack '(Mr|Mr?s)\. (Smith|Jones)' --output='$&'

  • ack läuft übrigens auch unter Windows.



Zusammenfassung:
ack ist i.d.R. das bessere grep und gehört in den Werkzeugkasten eines jeden Programmierers (m/w) oder Sysadmins (m/w).


Siehe auch:

Dienstag, 18. Dezember 2007

Perl 5.10.0 ist da

Passend zum heutigen 20. Geburtstag von Perl hat Rafaël Garcia-Suarez die neue Version 5.10.0 freigegeben.

Die neue Version wird gerade über die Mirror verteilt. Für ganz Eilige gibt es auch einen Torrent.

Danke an alle Perl 5 Porter für die neue Version.

Schönes Geburtstagsgeschenk.

via:

Happy Birthday Perl - Perl wird 20

Perl wird heute, 18. Dezember 2007, zwanzig Jahre alt.

Happy Birthday, Perl.

Zur Geschichte von Perl siehe auch:

Sonntag, 16. Dezember 2007

Catalyst Buch von Jonathan Rockway erschienen

Das Buch Catalyst - Accelerating Perl Web Application Development von Jonathan Rockway, einem der Core-Devoloper von Catalyst, ist bei Packt erschienen (ISBN: 1847190952).



In Deutschland wird es wohl erst Anfang 2008 lieferbar sein.

via:

Samstag, 15. Dezember 2007

Perl Experts - Why They Are Passionate About Perl

odinJobs hat mehrere Perl-Experten (brian d foy, Rafael Garcia-Suarez, Greg McCarroll, Frank Wiles, Zbigniew Lukasiak und Bill Ward) zum Thema Perl Experts - Why They Are Passionate About Perl interviewt.


"Q:What do you think is the most important feature of the Perl language?"
Einstimmige Antwort: CPAN und die dazuhörige Community, z.B. perlmonks oder lokale Gruppen (Perl Mongers).
Dem kann ich nur zustimmen.


via: Journal of brian_d_foy: Why They Are Passionate About Perl

Freitag, 14. Dezember 2007

Talk: Perl 6 bereits jetzt nutzen

Josh Heumann hat die Slides von seinem Talk I, For One, Welcome Our New Perl6 Overlords: Using Perl6 Now auf der Open Source Developers' Conference 2007 veröffentlicht.

Josh stellt viele Perl 6 Features vor, die man bereits heute mit Perl 5 benutzen kann, z.B. traits, junctions und roles.




Link zu den Slides.

Enjoy.

Mittwoch, 12. Dezember 2007

Movable Type ist jetzt Open Source

Moveable Type (MT), eine Blog-Software geschrieben in Perl, ist seit 12. Dezember 2007 Open Source (MTOS).

Die Open Source Version enthält laut MT alle Features des kommerziellen Produkts.

via: Movable Type is now open source

Packaging Perl Modules

Skud (Kirrily Robert) hat die Slides von ihrem Talk Packaging Perl Modules auf der Open Source Developers' Conference 2007 veröffentlicht.

In Teil 1 geht Skud auf die Struktur von CPAN-Modulen ein und erläutert die beiden wichtigsten Tools zur Erzeugung der Module: h2xs und Module-Starter. Automatisches Testen und Auflösung der Abhängigkeiten werden ebenfalls behandelt.

Im zweiten Teil geht Kirrily auf das Verpacken von CPAN-Modulen für bestehende Systeme, ein, insbesondere auf die beiden Tools cpan2rpm und dh-make-perl.
Diese beiden Werkzeuge erlauben es dem Linux-Sysadmin, mit der gewohnten Softwarepaketverwaltung (RPM, .deb) bei der Installation von CPAN-Modulen zu arbeiten.



Link zu den Slides

Enjoy!

Montag, 10. Dezember 2007

Admins sollen sich mehr mit Internetrecht beschäftigen

Admins sollen sich mehr mit Internetrecht beschäftigen berichtete das Linux-Magazin am 06.12.2007 als prägnante Zusammenfassung der 2. Secure Linux Administration Conference (SLAC).

An der Konferenz konnte ich leider nicht teilnehmen, aber die Slides der Vorträge stehen zum Download bereit, z.B.



Bleibt die Internet-Nutzung am Arbeitsplatz ungeregelt, ist sie für Mitarbeiter laut "regelmäßiger Übung", so der juristische Fachbegriff, grundsätzlich erlaubt. "Die juristischen Folgen sind kaum übersehbar", warnt Bodensiek.
Quelle: Admins sollen sich mehr mit Internetrecht beschäftigen


Aus eigener Erfahrung weiß ich, wie schwer es ist, Manager kleinerer Unternehmen von der Notwendigkeit einer Regelung bezüglich Email und Internet im Unternehmen zu überzeugen.


Als Admin sollte man sich meiner Meinung nach schon informieren, was da so auf einen zu kommen kann.

Beispiel gefällig:


Das Oberlandesgericht Karlsruhe hat am 10.01.2005 (1 Ws 152/04) entschieden, dass Administratoren, die E-Mails filtern oder blocken, sich damit unter Umständen strafbar machen. Dies ist eine Folge daraus, dass E-Mails unter den Begriff der Telekommunikation fallen. Laut § 3 Nr. 16 TKG ist Telekommunikation »der technische Vorgang des Aussendens, Übermittelns und Empfangens von Nachrichten jeglicher Art in der Form von Zeichen, Sprache, Bildern oder Tönen mittels Telekommunikationsanlagen«. Darunter fallen auch E-Mails.

Quelle: Peter Eisentraut , Alexander Wirt: Mit Open Source-Tools Spam und Viren bekämpfen. Für Unix- und Linux-basierte Mailsysteme, S. 316 , ISBN: 389721377X.

Also, beschäftigt euch mehr mit dem Thema Internetrecht, sucht Kontakt zu anderen Admins , sprecht mit dem Datenschutzbeauftragtem, dem Betriebsrat und der Geschäftsführung.

Dies ist keine Rechtsberatung.

Samstag, 8. Dezember 2007

Edsger W. Dijkstra - Discipline in Thought

Über das Leben von Edsger W. Dijkstra, dessen Arbeit ich sehr bewundere, und über seine Art zu Denken gibt es drei Videos bei YouTube:


Die Videos sind in Niederländisch mit englischen Untertiteln.

Film ab:


Enjoy!

Nützliche Tipps zum Thema E-Mail von Jochen Lillich

Jochen Lillich gibt in seinem Weblog Selbstadministration nützliche Tipps zum Thema E-Mail:



Den ein oder anderen Hinweis habe ich auf meine Liste der guten Vorsätze für 2008 gesetzt.

Perl als Business Enabler - Wireless Streaming Media Server in Perl

Squeezebox bietet einen Wireless Streaming Media Server, dessen Software in Perl geschrieben ist. Perl als Business Enabler.

Die Software (SlimServer) kann man kostenlos downloaden.

Der Quelltext macht einen aufgeräumten Eindruck, das Software-Design ist ansprechend.

Intern verwendet SlimServer den Perl Template Toolkit (TT2), DBIx::Class und weitere CPAN-Module.

via: use Perl; Squeezebox, with Perl

Ruby on Rails 2.0 ist fertig

Ruby on Rails gibt es seit gestern in der Version 2.0. Details zu allen Neuerungen gibt es im Railsweblog Rails 2.0: It's done!

Das werde ich mir zwischen den Jahren mal näher anschauen.

via: Heise.de - Web-Applikationsumgebung Ruby on Rails 2.0 ist fertig

Siehe auch:

Freitag, 7. Dezember 2007

Larry Wall: Programming is Hard, Let's Go Scripting...

Perl.com:
Larry Wall's annual State of the Onion describes the state of Perl, the language and the community. In his 11th address, he discussed the past, present, and future of scripting languages, including the several dimensions of design decisions important to the development of Perl 6.

Programming is Hard, Let's Go Scripting...

Donnerstag, 6. Dezember 2007

Herr Schäuble als Anagramm

Was doch der Nachname des Bundesinnenministers bei richtiger Anordnung so alles preisgibt:


perl -le "print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]"


via: Herr Schäuble als Anagramm

Mittwoch, 5. Dezember 2007

Sammel-Verfassungsbeschwerde gegen Vorratsdatenspeicherung nur noch bis zum 24.12.2007

Die Sammel-Verfassungsbeschwerde gegen Vorratsdatenspeicherung läuft noch bis zum 24.Dezember 2007.

Das Registrierungsformular kann man entweder online ausfüllen oder als Blanko downloaden und dann ausfüllen. Das ausgefüllte, ausgedruckte und unterschriebene Formular muss in beiden Fällen noch bis Weihnachten zur Post.

Der Jurist Meinhard Starostik wird die Verfassungsklage einreichen.

Ein Fernsehinterview mit Rechtsanwalt Starostik über die Verfassungsbeschwerde gegen die Vorratsdatenspeicherung wurde bereits am 7.12.2006 auf dem regionalen Berliner Sender TV.Berlin in der Reihe "Stadtgespräch Kontrovers" gezeigt.


Link zum Video.

Dienstag, 4. Dezember 2007

Not All The World's A Unix Box‎

Dave Cantrell hat auf dem London Perl Workshop 2007 in einem Lightning-Talk‎ Not All The World's A Unix Box‎ seine beiden CPAN-Module Devel::CheckOS und Devel::AssertOS vorgestellt (Slides).

Mit Devel::CheckOS lässt sich feststellen, unter welchem Betriebssystem das Perl-Programm gerade läuft. Neben einem freundlichem Interface zu $^O, ist das Modul auch in der Lage auf Varianten eines Betriebssystems, wie z.B. UNIX, das u.a. AIX, Linux oder Solaris bedeuten kann, zu prüfen.

Beispiel aus dem Vortrag:


use Devel::CheckOS qw(os_is);


sub get_users {
if(os_is(‘MicrosoftWindows’)) {
eval ‘use Win32’;

} elsif(os_is(‘Unix’)) {

… getpwent();

}

Mit Devel::AssertOS lässt sich festlegen, auf welchen Betriebssystemen das Modul überhaupt installierbar bzw. lauffähig ist.

Beispiel aus dem Vortrag:

# In Makefile.PL
use lib ‘inc’;
use Devel::AssertOS qw(Unix);

Das Modul lässt sich ab jetzt nur noch auf Betriebssystemen der UNIX-Familie installieren.

Die Frage, wieso man dafür 48 Module benötigt, beantwortet der Vortrag.

Montag, 3. Dezember 2007

Catalyst Advent Calendar 2007

Auf den Perl Advent Kalender 2007 hatte ich ja bereits hingewiesen.

Es gibt auch einen Catalyst Advent Calendar 2007.


via: use Perl: 2007 Catalyst Advent Calendar

Perl on Rails

Einige Entwickler der BBC haben anscheinend Perl on Rails erstellt, eine 1:1-Umsetzung von Ruby on Rails in Perl.

Hoffentlich wird Perl on Rails als Open Source veröffentlicht. Die Chancen stehen eigentlich nicht schlecht, BBC hat ja bereits einige (derzeit 17) Module zum CPAN beigetragen.

Das würde ich mir gerne einmal ansehen.

Siehe dazu auch:

Beginners Perl - Perl für Einsteiger

Die Slides des London Perl Workshop 2007 Tutorials "Beginners Perl" von Dave Cross sind online.



Link zu den Slides

via: Journal of davorg - LPW Slides

Sonntag, 2. Dezember 2007

YAPC::Europe 2008 vom 13. August bis 15. August 2008 in Kopenhagen, Dänemark

Die YAPC::Europe 2008 wird vom 13. August bis 15. August 2008 in Kopenhagen, Dänemark stattfinden.

Das Thema der Konferenz ist "Beautiful Perl".

via: YAPC::Europe 2008, Call for Attention

Wer möchte, kann gleich nach der YAPC::Europe 2008 an einem Marathon teilnehmen: Who wants to run a marathon after YAPC::EU?

Samstag, 1. Dezember 2007

Perl Advent Kalender ist online

Perl Advent '07, ein Online-Kalender-Event zur Weihnachtszeit, das an jedem Tag während der Adventszeit ein Perl-Modul vorstellt, ist online.

Es werden noch Helfer gesucht, die den ein oder anderen Beitrag kurzfristig erstellen können.