SlideShare ist ein Scribd-Unternehmen logo
1 von 195
Downloaden Sie, um offline zu lesen
Perl heute
This package has never done
anything and never will do
anything. If it changes,
that's a bug.
Please report it to
mst@shadowcat.co.uk where I
will proceed to ignore it.
4 Ansagen
4 Ansagen
kein Quiz
4 Ansagen
kein Quiz
Wählt Themenschwerpunkte
4 Ansagen
kein Quiz
Wählt Themenschwerpunkte
Fragen wenn Überschrift
4 Ansagen
kein Quiz
Wählt Themenschwerpunkte
Fragen wenn Überschrift
Folien abrufbar:
lichtkind.de
Benutzer lichtkind
De Perl Tut
de.perl.org wiki
de.perl.org
CPAN: lichtkind
de.perl.org
Perl 5.20
Vortrag =
heise.de Artikel
+ Modern Perl Buch
+ Perl Weekly ???
Perl 2014
Perl 5.20
auf Android +
WinCE
kompilierbar
Perl 5.20
CGI.pm,
Module::Build,
encoding.pm,
verlassen den Kern
Perl 5.20
Neue Optimierungen
Schnell (CoW,..)
Perl 5.20
kleine, wunderbare
Fixes und Features
März 2010
Dieser Vortrag:
große neue
Features
Dieser Vortrag:
Entwicklungs-
prozess
Sprachdesign
Dieser Vortrag:
Sprachdesign by
Community
Ablauf:
Perl 5.10 – 5.22
Perl 5.20
Perl Module
Perl Werkzeuge
Perl 6
Gemeinsamkeit:
Perl
Perl
Perl
Perl
Perl
Perl
Perl
Perl
Perl
,
Perl OO
Perl
Perl heute
Perl OO
Grüße aus den 80'ern
Perl 5.14
Perl 2000
Risiken
Handarbeit
Perl 2000
Risiken
Handarbeit
klare,einfache
defaults nicht überall
Philosophie
Was ist Perl?
TIMTOWTDI
Mächtigkeit oder
Einfachheit oder …
ist wählbar
TIMTOWTDI
Deine Entscheidung
wird geachtet
Perl
Programmiersprache
für erwachsene
Menschen
TIMTOWTDI
Mächtigkeit oder
Einfachheit oder …
ist wählbar
Perl 2000
Risiken
Handarbeit
klare,einfache
defaults nicht überall
Perl
in dubio pro
programmator
Perl 6
TIMTOWTDI
Mächtigkeit oder
Einfachheit oder …
erreichbar
Perl 6
“... to torture the
implementer on
behalf of the user.”
Perl 6
All VM Belong To Us
Perl Kultur
2005
2007
2007
Perl 5.10
2007
print ”$varn”;
say $var;
# viele Neuerungen, git
# neue Regex Engine
2007
use feature 'say'; # eines
use feature qw/.../; # mehr
# lexikalische Pragma
# viele Neuerungen
# neue Regex Engine
2007
use feature 'say'; # eines
use feature qw/.../; # mehr
use v5.10; # alle
# perl -E
# viele Neuerungen
# neue Regex Engine
2007
use feature 'switch';
given ($var) { # setzt $_
when (/^abc/) { … }
when ([1..5]) { … }
default { ... }
}
2010
use strict; # implizit
use v5.12; # alle
# jährliche releases
# jesse vincent (p6 manag.)
ACME
use strict;
Acme::Code::Police;
2002
use strict;
Acme::Code::FreedomFighter;
2010
use strict; # implizit
use v5.12; # alle
# given / when geändert
#
2011
use v5.14;
# Unicode 6, IPv6,
# Multithread
2012
use v5.16; # feature v. 5.16
use v5.14; # feature v. 5.14
# downgradable
2013
no warnings "experimental::switch";
use feature "switch";
use v5.18;
# perldoc perlexperiment
# manche feature sind
# experimental
2014
use experimental "switch";
use v5.20;
# perldoc perlexperiment
# Syntax::Construct
2014
use v5.20;
use feature qw/say state
switch unicode_strings
unicode_eval
evalbytes current_sub fc/;
2015
use v5.22;
# was kommt im Mai ?
2015
use v5.22;
# logische operatoren (p6)
# graph. & wortgrenzen (re)
# use strict für re
# refaliases, UTF 7
# <<>> double diamond op
Perl 5.20
use v5.20;
use latest;
use any::feature;
Perl 5.20
Installierbare Module !!!
use latest;
use any::feature;
Perl 5.20
Perl 5.20
use v5.20;
vs
use v5.16;
Perl 5.18
use v5.18;
Perl 5.18
use v5.18;
no warnings "switch";
Perl 5.18
use v5.18;
no warnings
"experimental::smartmatch";
Perl 5.18
use v5.18;
no warnings
"experimental::lexical_topic"
;
my $_ -----> local $_
Perl 5.18
use v5.18;
no warnings
"experimental::regex_sets";
Perl 5.18
use v5.18;
no warnings
"experimental::regex_sets";
! & | + - ^
Perl 5.18
use v5.18;
no warnings
"experimental::regex_sets";
/(?[ ( p{Thai} + p{Lao} )
& p{Digit} ])/
Perl 5.18
use v5.18;
no warnings
"experimental::lexical_subs";
Perl 5.18
use v5.18;
no warnings
"experimental::lexical_subs";
my sub { … }
our sub { … }
state sub { … }
Perl 5.20
use v5.20;
Perl 5.20
use v5.20;
use feature 'postderef';
Perl 5.20
use v5.20;
use feature 'postderef';
no warnings "experimental::postderef";
Perl 5.20
use v5.20;
use feature 'postderef';
no warnings "experimental::postderef";
use experimental 'postderef';
Pair Slices
Array/S. Kontext
my @array = ('d' .. 'f');
say @array; # alle Werte eines Array : d e f
say @array[0,1]; # Teilarray mit zwei Werten : d e
say $array[2]; # ein Wert aus gleichen Var.: f
A./Skalar Kontext
my @array = ('d' .. 'f');
say @array; # alle Werte eines Array : d e f
say @array[0,1]; # Teilarray mit zwei Werten : d e
say $array[2]; # ein Wert aus gleichen Var.: f
my %hash = (a => 1, b => 2, c => 3 );
say %hash; # alle Schlüssel & Werte: a 1 b 2 c 3
say @hash{'a','b'}; # Werten zweier Schlüssel: 1 2
say $hash{'c'}; # Wert des Schlüssels: 3
Pair Slices
my @array = ('d' .. 'f');
my %hash = (a => 1, b => 2, c => 3 );
say %array[0,1]; # im Wechsel Index/Wert: 0 d 1 e
say %hash{'a','b'}; # Schlüssel/Wert: a 1 b 2
Pair Slices
my @array = ('d' .. 'f');
my %hash = (a => 1, b => 2, c => 3 );
say %array[0,1]; # im Wechsel Index/Wert: 0 d 1 e
say %hash{'a','b'}; # Schlüssel/Wert: a 1 b 2
Perl 6:
say @array[0,1] :p; # Ausgabe: 0 => "d" 1 => "e"
say %hash<'a','b'> :p; # Ausgabe: "a" => 1 "b" => 2
Pair Slices on Ref
my $arrayref = ['d' .. 'f'];
my $hashref = {a => 1, b => 2, c => 3 };
say %$arrayref[0,1]; # Index/Wert: 0 d 1 e
say %$hashref{'a','b'}; # Schlüssel/Wert: a 1 b 2
Hashes in Perl 5
Postfix-Deref.
Postfix-Deref.
push $hash{'key'}, 'value';
Postfix-Deref.
push $hash{'key'}, 'value';
push @{$hash{'key'}}, 'value';
Postfix-Deref.
stört den Lesefluss
push @{$hash{'key'}}, 'value';
Postfix-Deref.
$array[2][7]; # ein Wert, wie bekannt
$array[2]->[7]; # dasselbe
Postfix-Deref.
$array[2][7]; # ein Wert, wie bekannt
$array[2]->[7]; # dasselbe
$array[2]->@[7]; # kein Vorteil soweit
Postfix-Deref.
$array[2][7]; # ein Wert, wie bekannt
$array[2]->[7]; # dasselbe
$array[2]->@[7]; # kein Vorteil soweit
$array[2]->@[5,6]; # 2 Werte, gleichbedeutend mit:
@{$array[2]}[5,6]; # ging bisher nur so
$array[2]->%[5,6]; # auch Pair Slices möglich
$hash{'a'}->%{'g','e'}; # bei verschachtelten Hashes
Postfix-Deref.
$array[2][7]; # ein Wert, wie bekannt
$array[2]->[7]; # dasselbe
$array[2]->@[7]; # kein Vorteil soweit
$array[2]->@[5,6]; # 2 Werte, gleichbedeutend mit:
@{$array[2]}[5,6]; # ging bisher nur so
$array[2]->%[5,6]; # auch Pair Slices möglich
$hash{'a'}->%{'g','e'}; # bei verschachtelten Hashes
$array[2]->@* # gesamter Unterarrayinhalt
$array[2]->$#* # Anzahl der Elemente
Postfix-Deref.
$array[2][7]; # ein Wert, wie bekannt
$array[2]->[7]; # dasselbe
$array[2]->@[7]; # kein Vorteil soweit
$array[2]->@[5,6]; # 2 Werte, gleichbedeutend mit:
@{$array[2]}[5,6]; # ging bisher nur so
$array[2]->%[5,6]; # auch Pair Slices möglich
$hash{'a'}->%{'g','e'}; # bei verschachtelten Hashes
$array[2]->@* # gesamter Unterarrayinhalt
$array[2]->$#* # Anzahl der Elemente
$array[2]->*{ARRAY} # GLOB / symbol Tabelle
Postfix-Deref.
$array[2][7]; # ein Wert, wie bekannt
$array[2]->[7]; # dasselbe
$array[2]->@[7]; # kein Vorteil soweit
$array[2]->@[5,6]; # 2 Werte, gleichbedeutend mit:
@{$array[2]}[5,6]; # ging bisher nur so
$array[2]->%[5,6]; # auch Pair Slices möglich
$hash{'a'}->%{'g','e'}; # bei verschachtelten Hashes
$array[2]->@* # gesamter Unterarrayinhalt
$array[2]->$#* # Anzahl der Elemente
$array[2]->*{ARRAY} # GLOB / symbol Tabelle
“$hash{a}->%{g,e}” # sogar interpoliert
Sprachdesign++:
Lesefluss: von links nach rechts
konsistent mit allem Bisherigen
keine Ausnahmen
1 neue Syntaxregel
Signaturen
use experimental 'signatures';
sub sag ($subjekt, $praedikat, $objekt) {
say "$subjekt $praedikat $objekt.";
}
Signaturen
Signaturen
Signaturen
use experimental 'signatures';
sub sag ($subjekt, $praedikat, $objekt) {
say "$subjekt $praedikat $objekt.";
}
Signaturen
sub sag {
my($subjekt, $praedikat, $objekt)=@_;
say "$subjekt $praedikat $objekt.";
}
Signaturen
use experimental 'signatures';
sub sag ($subjekt, $praedikat, $objekt) {
my ($sub, $praed, $obj) = @_;
say "$subjekt $praedikat $objekt.";
say "$sub $praed $obj.";
}
Signaturen
sag ( "Du" );
sag ( "Du", "hast" );
sag ( "Du", "hast", "mich" );
sag ( "Du", "hast", "mich", "gefragt" );
Error
sag ( "Du" );
sag ( "Du", "hast" );
sag ( "Du", "hast", "mich" );
sag ( "Du", "hast", "mich", "gefragt" );
Prototypen
sub sag ($$;$) {
say "$_[0] $_[1] $_[2].";
}
Prototypen
use experimental 'signatures';
sub :prototype($$;$)
($subjekt, $praedikat, $objekt) {
say "$subjekt $praedikat $objekt.";
}
Signaturen
use experimental 'signatures';
sub sag ($, $praedikat, $objekt) {
say "Ich $praedikat $objekt.";
}
Prototyp Attribut
use experimental 'signatures';
sub :prototype($$;$)
($subjekt, $praedikat, $objekt) {
say "$subjekt $praedikat $objekt.";
}
Signaturen
use experimental 'signatures';
sub sag ($subjekt, $ =, $objekt) {
say "$subjekt vermutet $objekt.";
}
Signaturen
use experimental 'signatures';
sub sag ($subjekt, $praedikat, $ =) {
say "$subjekt $praedikat Snowden.";
}
Signaturen
use experimental 'signatures';
sub sag ($subjekt, $praedikat, @) {
say "$subjekt $praedikat Snowden.";
}
“Slurpy” Array
use experimental 'signatures';
sub sag($subjekt, $praedikat,@objekte){
say "$subjekt $praedikat @objekte.";
}
“Slurpy” Hash
use experimental 'signatures';
sub sag ($subjekt, %praed_objekt) {
say $subjekt, " ", %praed_objekt,".";
}
Module
Task::Kensho,
M[o[o[se|ps]]],
Type::Tiny, Try::Tiny,
Future, autodie,
Data::Printer, Sereal,
IO::All
Task::Kensho
Erleuchtung
Moose
Moose
kompatible Objekte
Moose
auto getter/setter, delegation,
defaultwerte, trigger, lazy eval,
signaturen, typprüfung,
rollen, eigene subtypen,
method mod, inside out
delegation,
wesentlich mehr Komfort
Moose
auto getter/setter, delegation,
defaultwerte, trigger, lazy eval,
signaturen, typprüfung,
rollen, eigene subtypen,
method mod, inside out
delegation,
wesentlich mehr Komfort
MooseX
Class::MOP
MooseX::Declare
auto: getter/setter
Moops
auto: getter/setter
Mouse
Elche ohne Geweih?
Mouse
Elche ohne Geweih?
Nein nur schneller dank XS
Moo
Moo
minimale OO in Perl
schnell, klein, praktisch
kompatibel wie möglich
Mo
package Mo;
$VERSION=0.39;
no warnings;
my$M=__PACKAGE__.'::';*{$M.Object::new}=sub{my$c=shift;my$s=
bless{@_},$c;my%n=%{$c.::.':E'};map{$s->{$_}=$n{$_}->()if!exists$s-
>{$_}}keys%n;$s};*{$M.import}=sub{import warnings;$^H|
=1538;my($P,%e,%o)=caller.'::';shift;eval"no Mo::$_",&{$M.$_.::e}
($P,%e,%o,@_)for@_;return if$e{M};%e=(extends,sub{eval"no
$_[0]()";@{$P.ISA}=$_[0]},has,sub{my$n=shift;my$m=sub{$#_?$_[0]
{$n}=$_[1]:$_[0]{$n}};@_=(default,@_)if!($#_%2);$m=$o{$_}->($m,
$n,@_)for sort keys%o;*{$P.$n}=$m},%e,);*{$P.$_}=$e{$_}for keys
%e;@{$P.ISA}=$M.Object};
M
package M;
$VERSION=1;
M
package M;
$VERSION=1;
Nothing::Tiny
M Dokumentation
This package has never done
anything and never will do
anything. If it changes,
that's a bug.
Please report it to
mst@shadowcat.co.uk where I will
proceed to ignore it.
MST gewonnen ?
mop redux
Perl OO in XS/C
5.24 ??
Type::Tiny
Try::Tiny
try / catch / finally
Future
Versprechen (promise)
Sag mir wie weit du bist. /
Ergebnis
Promise
Versprechen (promise)
node.js API
Future
Logik utils
Python twisted: deferred
Java ?
Future
Paul Evans
IO::Async
EV / Coro / AE
Marc Lehmann
POE
1998
Rocco Caputo
autodie
use autodie;
Data::Printer
Data::Printer
Datenstrukturen
auch Objekte
Formatiert in Farbe
Sereal
Sereal
Daten auf Platte
und zurück
schnell und kompakt
IO::All
IO::All
$inhalt < io 'datei.txt';
$inhalt = io 'datei.txt';
$inhalt = io->file('..')->slurp;
@inhalte = io->dir('..')->all;
$io = io('my/dir/'); # %$io
IO::All
say $_->getline
for io->dir('dir')->all_files;
IO::All
say $_->getline
for io->dir('dir')->all_files;
1. Zeilen der Dateien
IO::All
Dateien, Verzeichnisse,
Iteratoren, Rückwärts, stat,
STDIN, STDOUT, Pipes,
Sockets, DBM
IO::All
Dateien, Verzeichnisse,
Iteratoren, Rückwärts, stat,
STDIN, STDOUT, Pipes,
Sockets, DBM
Plugins: Mail, LWP
IO::All
use IO::ALL;
my $socket = io(':80')->fork->accept;
$socket->print($_) while <DATA>;
$socket->close;
__DATA__
<!DOCTYPE html>
...
Mojolicious
Dancer ?
Werkzeuge
MetaCPAN
cpanminus, perlbrew,
carton, Dist::Zilla,
Perl::Critic, NYTProf
rxrx, ack, asciio
Werkzeuge
Werkzeuge
App::cpanminus
App::cpanminus
installiert Module
keine Konfiguration
App::cpanminus
curl -L https://cpanmin.us |
perl - --sudo
App::cpanminus
App::perlbrew
App::perlbrew
lokales Perl
einfacher Wechsel
[Massen]test
Perl::Build
local::lib
Object::Remote
Carton
Dependency Manager
Carton
FatPacker
Cava
PAR
Dist::Zilla
GODZILLA
OVERKILL!!
Perl::Critic
Prüft Quellcode
5 Brutalitätsstufen
Basierend auf PBP + C.C.
Eigene Regeln
projektbezogene Regelweke
Damian Conway
Devel::NYTProf
intelligenter Profiler
schnell, genau
HTML - Reports
Flammenansicht
Devel::NYTProf
Devel::NYTProf
rxrx
Regex REPL und Debugger
vis. Nav. ASCII, aber bunt
versteht gesamte Perl rx
Damian Conway(Parse::RecDescent)
rxrx
rxrx
App::Ack (ack)
grep für Programmierer
Perl Regex
Ignoriert unwichtiges
file & dir selection
App::Asciio
Diagramme und Graphiken
in ASCII
auf Knopfdruck
aus der ASCII - App
Mehr Info:
[de.]perl.org
perl-magazin.de
perl-tutorial.org
perl.com perlsphere.net
perl-tutorial.org
6. - 8. Mai DPW
Dresden ist schön
Danke

Weitere ähnliche Inhalte

Was ist angesagt?

Mehr Dynamik Durch Skriptsprachen
Mehr Dynamik Durch SkriptsprachenMehr Dynamik Durch Skriptsprachen
Mehr Dynamik Durch Skriptsprachen
jlink
 
Tech Talk: Pyparsing
Tech Talk: PyparsingTech Talk: Pyparsing
Tech Talk: Pyparsing
schlauch
 
Designpatterns in Ruby
Designpatterns in RubyDesignpatterns in Ruby
Designpatterns in Ruby
pfleidi
 

Was ist angesagt? (19)

Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
 
Source Code Analyse - Ein praktikabler Ansatz
Source Code Analyse - Ein praktikabler AnsatzSource Code Analyse - Ein praktikabler Ansatz
Source Code Analyse - Ein praktikabler Ansatz
 
PHP_Codesniffer
PHP_CodesnifferPHP_Codesniffer
PHP_Codesniffer
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
 
An Introduction to Ruby
An Introduction to RubyAn Introduction to Ruby
An Introduction to Ruby
 
Ruby, Ruby, Ruby!
Ruby, Ruby, Ruby!Ruby, Ruby, Ruby!
Ruby, Ruby, Ruby!
 
Mehr Dynamik Durch Skriptsprachen
Mehr Dynamik Durch SkriptsprachenMehr Dynamik Durch Skriptsprachen
Mehr Dynamik Durch Skriptsprachen
 
Tech Talk: Pyparsing
Tech Talk: PyparsingTech Talk: Pyparsing
Tech Talk: Pyparsing
 
IPC2017SE - Zend\Expressive Workshop
IPC2017SE - Zend\Expressive WorkshopIPC2017SE - Zend\Expressive Workshop
IPC2017SE - Zend\Expressive Workshop
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit Clojure
 
Designpatterns in Ruby
Designpatterns in RubyDesignpatterns in Ruby
Designpatterns in Ruby
 
Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails Einführung
 
IPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 ReloadedIPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 Reloaded
 
Die WordPress Transients API
Die WordPress Transients APIDie WordPress Transients API
Die WordPress Transients API
 
Devs@Home - Einführung in Go
Devs@Home - Einführung in GoDevs@Home - Einführung in Go
Devs@Home - Einführung in Go
 
TYPO3 coding guidelines
TYPO3 coding guidelinesTYPO3 coding guidelines
TYPO3 coding guidelines
 
APIs mit Zend\Expressive erstellen
APIs mit Zend\Expressive erstellenAPIs mit Zend\Expressive erstellen
APIs mit Zend\Expressive erstellen
 
Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0
 

Andere mochten auch

Como confundir la “luz al final del túnel” con “un mercancías de frente”
Como confundir la “luz al final del túnel” con “un mercancías de frente”Como confundir la “luz al final del túnel” con “un mercancías de frente”
Como confundir la “luz al final del túnel” con “un mercancías de frente”
Lagranpartida
 
Data, The New Currency
Data, The New CurrencyData, The New Currency
Data, The New Currency
Donald Miner
 
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
mfrancis
 

Andere mochten auch (8)

Como confundir la “luz al final del túnel” con “un mercancías de frente”
Como confundir la “luz al final del túnel” con “un mercancías de frente”Como confundir la “luz al final del túnel” con “un mercancías de frente”
Como confundir la “luz al final del túnel” con “un mercancías de frente”
 
Neuperl6
Neuperl6Neuperl6
Neuperl6
 
Apache Falcon - Sanjeev Tripurari
Apache Falcon - Sanjeev TripurariApache Falcon - Sanjeev Tripurari
Apache Falcon - Sanjeev Tripurari
 
Java fx tools
Java fx toolsJava fx tools
Java fx tools
 
Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Context
 
Apache Falcon at Hadoop Summit 2013
Apache Falcon at Hadoop Summit 2013Apache Falcon at Hadoop Summit 2013
Apache Falcon at Hadoop Summit 2013
 
Data, The New Currency
Data, The New CurrencyData, The New Currency
Data, The New Currency
 
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
What’s cool in the new and updated OSGi specs (DS, Cloud and more) - David Bo...
 

Ähnlich wie Perl 5.20: Feature, Kultur, Module, Werkzeuge

Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershell
Creasoft AG
 
Metaprogrammierung mit Ruby
Metaprogrammierung mit RubyMetaprogrammierung mit Ruby
Metaprogrammierung mit Ruby
Dario Rexin
 
Scala - A Scalable Language
Scala - A Scalable LanguageScala - A Scalable Language
Scala - A Scalable Language
pfleidi
 
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenVon Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Tim Furche
 
Objektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidObjektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluid
Oliver Klee
 

Ähnlich wie Perl 5.20: Feature, Kultur, Module, Werkzeuge (20)

Perl 6 Regex und Grammars
Perl 6 Regex und GrammarsPerl 6 Regex und Grammars
Perl 6 Regex und Grammars
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
 
Testing tools
Testing toolsTesting tools
Testing tools
 
Php Schulung
Php SchulungPhp Schulung
Php Schulung
 
Ruby is Magic - Episode #7: Closures
Ruby is Magic - Episode #7: ClosuresRuby is Magic - Episode #7: Closures
Ruby is Magic - Episode #7: Closures
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershell
 
Web Entwicklung mit PHP - Teil 2
Web Entwicklung mit PHP - Teil 2Web Entwicklung mit PHP - Teil 2
Web Entwicklung mit PHP - Teil 2
 
Drupal 8: TWIG Template Engine
Drupal 8:  TWIG Template EngineDrupal 8:  TWIG Template Engine
Drupal 8: TWIG Template Engine
 
Metaprogrammierung mit Ruby
Metaprogrammierung mit RubyMetaprogrammierung mit Ruby
Metaprogrammierung mit Ruby
 
Ruby on Rails SS09 06
Ruby on Rails SS09 06Ruby on Rails SS09 06
Ruby on Rails SS09 06
 
Einführung in SASS und Compass
Einführung in SASS und CompassEinführung in SASS und Compass
Einführung in SASS und Compass
 
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige Änderungen
 
Source-Code-Analyse – ein praktikabler Ansatz
Source-Code-Analyse – ein praktikabler AnsatzSource-Code-Analyse – ein praktikabler Ansatz
Source-Code-Analyse – ein praktikabler Ansatz
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
 
Scala - A Scalable Language
Scala - A Scalable LanguageScala - A Scalable Language
Scala - A Scalable Language
 
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenVon Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
 
Objektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidObjektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluid
 
PHP Sucks?!
PHP Sucks?!PHP Sucks?!
PHP Sucks?!
 

Mehr von lichtkind

Bettereditors
BettereditorsBettereditors
Bettereditors
lichtkind
 

Mehr von lichtkind (15)

Wx::Perl::Smart
Wx::Perl::SmartWx::Perl::Smart
Wx::Perl::Smart
 
Complete Programming
Complete ProgrammingComplete Programming
Complete Programming
 
P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rx
 
Perl 6 Datastructures
Perl 6 DatastructuresPerl 6 Datastructures
Perl 6 Datastructures
 
Perl 6 Datenstrukturen
Perl 6 DatenstrukturenPerl 6 Datenstrukturen
Perl 6 Datenstrukturen
 
Document Driven Development
Document Driven DevelopmentDocument Driven Development
Document Driven Development
 
Modern wx perl
Modern wx perlModern wx perl
Modern wx perl
 
Bettereditors
BettereditorsBettereditors
Bettereditors
 
Hgit
HgitHgit
Hgit
 
Was können wir von Rebol lernen?
Was können wir von Rebol lernen?Was können wir von Rebol lernen?
Was können wir von Rebol lernen?
 
Perl Testing
Perl TestingPerl Testing
Perl Testing
 
Perl in der Wiki
Perl in der WikiPerl in der Wiki
Perl in der Wiki
 
What is Kephra about?
What is Kephra about?What is Kephra about?
What is Kephra about?
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?
 

Perl 5.20: Feature, Kultur, Module, Werkzeuge