SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Perl Renaissance Reloaded
Gregor Goldbach

glauschwuffel@nomaden.org
Was soll dieser Titel?
• Paul Fenwick hat einen Vortrag gehalten, der »Perl
Renaissance« hieß: https://www.youtube.com/watch?
v=oZ5xTI1QRTA

• Seine Themen greife ich lose auf – was ist in den letzten
Jahren alles entstanden?

• Zum Schluß schweife ich deutlich ab :-)

• Viele Links nach draußen und Live-Demos …
Paul Fenwick, »The Future is Awesome«, https://www.youtube.com/watch?v=c7TwbTtofLo
Überblick
• CPAN

• Frameworks

• Tools

• Testen
CPAN
• »comprehensive Perl archive network«

• zentrale Sammelstelle für Perl-Erweiterungen

• »Das Killer-Feature« oder »die Seele« von Perl

• mit Perl 5 entstanden (vorher gab es keine Module)
MetaCPAN
vom API zum Platzhirsch
MetaCPAN
• ursprünglich als API zum CPAN gedacht

• mittlerweile viel beliebter als search.cpan.org

• mächtiger und moderneres Layout

• wird stetig weiterentwickelt

• Demo: https://metacpan.org/pod/distribution/App-
cpanminus/lib/App/cpanminus/fatscript.pm
CPAN Testers Matrix
• die »CPAN Testers« sind Freiwillige, die das CPAN testen

• Resultate nach Betriebssystem und Perl-Version

• Prüfung auf Lauffähigkeit vor Installation

• demo: http://matrix.cpantesters.org/
cpanm
• früher konnte man nur über die CPAN-Shell Module
installieren

• beim ersten Aufruf unfassbar viele Konfigurationsoptionen

• viel zu viel Ausgaben während der Installation

• Installation ohne Root-Rechte knifflig
cpanm (2)
• Ausführbar ohne Konfiguration

• gibt während der Installation nur wesentliche Infos aus

• die ausführlichen Informationen stehen im Log

• Installationsziel wählbar

• Demo
cpanm-reporter
• die CPAN-Testers-Matrix wird von allen befüllt

• https://metacpan.org/pod/App::cpanminus::reporter

• Ergebnis der Installation durch cpanm wird gesendet

• die anstehenden Ergebnisse kann man sich ansehen:
Demo http://metabase.cpantesters.org/tail/log.txt
Stratopan
• Webdienst, basiert auf pinto

• Sammelt Module mit bestimmten Versionen in einem
Repo

• mit cpanm kann man von diesem Repo installieren

• damit werden reproduzierbar die gleichen Module
installiert

• Schnellstart: http://perltricks.com/article/48/2013/11/15/
A-Stratopan-quick-start-user-guide/
Frameworks
Mojolicious
• modernes Framework vom Autor von Catalyst

• hat keine Abhängigkeiten bis auf Kern-Module

• aktive Community, stetige Weiterentwicklung

• massig Plugins

• ausgiebige Doku, Screencasts, Howtos

• Einstiegsseite: http://mojolicious.org/
Mojolicious-Boilerplate
• https://github.com/tudorconstantin/Mojolicious-
Boilerplate

• Mojolicous + Bootstrap + Font Awesome

• Demo
Moose
• Perl5 hat sehr schmale Objektorientierung

• Perl6 hat OO aus allen Sprachen gesammelt

• Moose ist die Portierung des OO-Systems von Perl6 nach
Perl5

• Syntax ist immer noch Perl5, nur Semantik wird verändert
Moose (2)
• Attribute: https://metacpan.org/pod/distribution/Moose/
lib/Moose/Cookbook/Basics/
Point_AttributesAndSubclassing.pod

• Subtypen: https://metacpan.org/pod/
Moose::Util::TypeConstraints

• ausführliches Handbuch: https://metacpan.org/pod/
distribution/Moose/lib/Moose/Manual.pod
Toolshttps://blog.therestaurantzone.com/12-restaurant-recruiting-tools-to-try-out-today/
perltidy
• formatiert Perl-Quelltext gemäß Konfiguration

• funktioniert zufällig ganz gut :-)

• es gibt Pakete für alle gängigen Editoren

• Test::PerlTidy testet, ob der Code aufgeräumt ist

• https://metacpan.org/pod/distribution/Perl-Tidy/bin/
perltidy
perlcritic
• TIMTOWTDI, aber einige Arten sind besser als andere

• perlcritic prüft Quelltext auf Einhaltung von Richtlinien

• perlcritic hilft Teams, Codiernormen durchzusetzen

• Richtlinien werden programmiert und sind normale
Module

• Demo: http://perlcritic.com/
perlbrew
• traditionell kommt Windows ohne Perl und Unix mit einer
veralteten Version

• ein oder mehrere neuere Perl zu installieren war früher nur
händisch möglich

• mit perlbrew kann man mehrere Perl-Installationen
gleichzeitig auf einem System verwalten

• Homepage mit Ninja: https://perlbrew.pl/
carton
• ähnlich wie pinto/Stratopan (bzw. bundler in ruby)

• verwaltet Modulabhängigkeiten für eine Anwendung

• kann diese installieren und die Anwendung dann starten

• Doku: https://metacpan.org/pod/distribution/Carton/
script/carton

• neue Spezifikation von Abhängigkeiten: cpanfile
requires 'Plack', '1.0'; # 1.0 or newer
requires 'JSON', '>= 2.00, < 2.80';
 
recommends 'JSON::XS', '2.0';
conflicts 'JSON', '< 1.0';
 
on 'test' => sub {
  requires 'Test::More', '>= 0.96, < 2.0';
  recommends 'Test::TCP', '1.12';
};
 
on 'develop' => sub {
  recommends 'Devel::NYTProf';
};
 
feature 'sqlite', 'SQLite support' => sub {
  recommends 'DBD::SQLite';
};
Devel::NYTProf
• der Profiler

• misst Ausführungszeiten des Codes

• konvertiert Messdaten in HTML-Seiten

• Demo
Dist::Zilla
• »maximum overkill for CPAN authors«

• um ein Modul auf CPAN hochzuladen, muss man viele
Dateien anlegen

• »eigentlich will ich doch nur dieses Modul hochladen«

• die notwendigen Dateien kann Dist::Zilla anlegen (und
noch viel mehr)

• Demo: autotest
Testenhttp://www.360logica.com/blog/effective-software-testing-tips-testers-go/
Test::More
• Standard-Testmodul

• bietet einfache Funktionen, um erwartetes mit
tatsächliche berechnetem Ergebnis zu vergleichen

• ok, is, like, …

• kann auch Datenstruktur (einfach) testen

• verführt zum Schreiben von Spaghetti-Testcode

• Doku: https://metacpan.org/pod/Test::More
Test::Class
• hilft, Test-Suites durch Objektorientierung zu organisieren

• fühlt sich wie JUnit an

• die eigentlichen Testfunktionen sind die von Test::More

• Doku: https://metacpan.org/pod/Test::Class
Test::Spec
• hilft beim Schreiben deklarativer Test-Suites

• ist an RSpec angelehnt und kommt aus der »behaviour
driven development«-Ecke

• Ausgabe liest sich wie Standard-TAP

• Doku: https://metacpan.org/pod/Test::Spec
Test::BDD::Cucumber
• ebenfalls von Ruby und BDD

• Tests sind fachlich in Klartext geschrieben und werden
per Regex auf Testfunktionen abgebildet

• Muster: given-when-then, »outside-in«

• Tutorial: https://metacpan.org/pod/distribution/Test-BDD-
Cucumber/lib/Test/BDD/Cucumber/Manual/Tutorial.pod
Devel::Cover
• Misst die Testabdeckung: Welcher Anteil meines Codes
wird durch Tests abgedeckt?

• generiert HTML-Seiten

• Plugin for Dist::Zilla existiert

• demo: »dzil cover«
Test::WWW::Mechanize
• benutzt WWW::Mechanize zum automatisierten Testen
von Webseiten

• spricht HTTP und HTML, aber kein Javascript

• emuliert somit keinen ganzen Browser, ist aber dafür sehr
schnell

• Kandidat für Smoke-Tests

• Doku: https://metacpan.org/pod/Test::WWW::Mechanize
Brownie
• an capybara angelehnt (ruby)

• einfache DSL zum Testen von Webseiten

• hat als Treiber Mechanize und Selenium

• minimal aber vielversprechend

• wird anscheinend nicht gepflegt

• Doku: https://metacpan.org/pod/Brownie
Danke!
• Fragen?

• Anmerkungen?
35

Contenu connexe

Tendances

Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Oliver Busse
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopNETWAYS
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rexinovex GmbH
 
zopyx.plone migration - Plone Hochschultagung 2013
zopyx.plone migration - Plone Hochschultagung 2013zopyx.plone migration - Plone Hochschultagung 2013
zopyx.plone migration - Plone Hochschultagung 2013Andreas Jung
 
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Ralf Eggert
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Python-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und EclipsePython-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und EclipseThomas Koch
 
Git class german / english
Git class german / englishGit class german / english
Git class german / englishKevin Read
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessRalf Abramowitsch
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
D Z U G Unser Ding
D Z U G  Unser DingD Z U G  Unser Ding
D Z U G Unser DingAndreas Jung
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0Patrick Charrier
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatMarkus Goldbeck
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Gitpaultcochrane
 

Tendances (20)

Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
 
zopyx.plone migration - Plone Hochschultagung 2013
zopyx.plone migration - Plone Hochschultagung 2013zopyx.plone migration - Plone Hochschultagung 2013
zopyx.plone migration - Plone Hochschultagung 2013
 
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Python-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und EclipsePython-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und Eclipse
 
Einführung Maven
Einführung MavenEinführung Maven
Einführung Maven
 
Ant im Detail
Ant im DetailAnt im Detail
Ant im Detail
 
Git class german / english
Git class german / englishGit class german / english
Git class german / english
 
Deployment
DeploymentDeployment
Deployment
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build Prozess
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
D Z U G Unser Ding
D Z U G  Unser DingD Z U G  Unser Ding
D Z U G Unser Ding
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with Behat
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Git
 

Similaire à Perl Renaissance Reloaded

Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit RexJan Gehring
 
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployMark Lechtermann
 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Martin Alfke
 
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnTipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnViktor Vogel
 
20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatengeKarin Patenge
 
Javascript done right
Javascript done rightJavascript done right
Javascript done rightDirk Ginader
 
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)NETWAYS
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerNETUserGroupBern
 
Creative codingday 2_10012014_vor
Creative codingday 2_10012014_vorCreative codingday 2_10012014_vor
Creative codingday 2_10012014_vorJeongHo Park
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Railsgearwheeldotnet
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
Drupal für Entwickler
Drupal für EntwicklerDrupal für Entwickler
Drupal für EntwicklerAmazee Labs
 
Joomlaplatform deutsch
Joomlaplatform deutschJoomlaplatform deutsch
Joomlaplatform deutschRobert Deutz
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Daniel Havlik
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaAndreas Jung
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Joachim Baumann
 

Similaire à Perl Renaissance Reloaded (20)

Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
 
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014
 
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnTipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
 
20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge
 
Javascript done right
Javascript done rightJavascript done right
Javascript done right
 
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
 
Creative codingday 2_10012014_vor
Creative codingday 2_10012014_vorCreative codingday 2_10012014_vor
Creative codingday 2_10012014_vor
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Rails
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
Drupal für Entwickler
Drupal für EntwicklerDrupal für Entwickler
Drupal für Entwickler
 
Joomlaplatform deutsch
Joomlaplatform deutschJoomlaplatform deutsch
Joomlaplatform deutsch
 
ColdFusion gibt's das noch?
ColdFusion gibt's das noch?ColdFusion gibt's das noch?
ColdFusion gibt's das noch?
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
HTML5-Features
HTML5-FeaturesHTML5-Features
HTML5-Features
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
PHP5 und Oracle
PHP5 und OraclePHP5 und Oracle
PHP5 und Oracle
 

Perl Renaissance Reloaded

  • 1. Perl Renaissance Reloaded Gregor Goldbach glauschwuffel@nomaden.org
  • 2. Was soll dieser Titel? • Paul Fenwick hat einen Vortrag gehalten, der »Perl Renaissance« hieß: https://www.youtube.com/watch? v=oZ5xTI1QRTA • Seine Themen greife ich lose auf – was ist in den letzten Jahren alles entstanden? • Zum Schluß schweife ich deutlich ab :-) • Viele Links nach draußen und Live-Demos …
  • 3. Paul Fenwick, »The Future is Awesome«, https://www.youtube.com/watch?v=c7TwbTtofLo
  • 5. CPAN • »comprehensive Perl archive network« • zentrale Sammelstelle für Perl-Erweiterungen • »Das Killer-Feature« oder »die Seele« von Perl • mit Perl 5 entstanden (vorher gab es keine Module)
  • 6. MetaCPAN vom API zum Platzhirsch
  • 7. MetaCPAN • ursprünglich als API zum CPAN gedacht • mittlerweile viel beliebter als search.cpan.org • mächtiger und moderneres Layout • wird stetig weiterentwickelt • Demo: https://metacpan.org/pod/distribution/App- cpanminus/lib/App/cpanminus/fatscript.pm
  • 8. CPAN Testers Matrix • die »CPAN Testers« sind Freiwillige, die das CPAN testen • Resultate nach Betriebssystem und Perl-Version • Prüfung auf Lauffähigkeit vor Installation • demo: http://matrix.cpantesters.org/
  • 9. cpanm • früher konnte man nur über die CPAN-Shell Module installieren • beim ersten Aufruf unfassbar viele Konfigurationsoptionen • viel zu viel Ausgaben während der Installation • Installation ohne Root-Rechte knifflig
  • 10. cpanm (2) • Ausführbar ohne Konfiguration • gibt während der Installation nur wesentliche Infos aus • die ausführlichen Informationen stehen im Log • Installationsziel wählbar • Demo
  • 11. cpanm-reporter • die CPAN-Testers-Matrix wird von allen befüllt • https://metacpan.org/pod/App::cpanminus::reporter • Ergebnis der Installation durch cpanm wird gesendet • die anstehenden Ergebnisse kann man sich ansehen: Demo http://metabase.cpantesters.org/tail/log.txt
  • 12. Stratopan • Webdienst, basiert auf pinto • Sammelt Module mit bestimmten Versionen in einem Repo • mit cpanm kann man von diesem Repo installieren • damit werden reproduzierbar die gleichen Module installiert • Schnellstart: http://perltricks.com/article/48/2013/11/15/ A-Stratopan-quick-start-user-guide/
  • 13.
  • 15. Mojolicious • modernes Framework vom Autor von Catalyst • hat keine Abhängigkeiten bis auf Kern-Module • aktive Community, stetige Weiterentwicklung • massig Plugins • ausgiebige Doku, Screencasts, Howtos • Einstiegsseite: http://mojolicious.org/
  • 17. Moose • Perl5 hat sehr schmale Objektorientierung • Perl6 hat OO aus allen Sprachen gesammelt • Moose ist die Portierung des OO-Systems von Perl6 nach Perl5 • Syntax ist immer noch Perl5, nur Semantik wird verändert
  • 18. Moose (2) • Attribute: https://metacpan.org/pod/distribution/Moose/ lib/Moose/Cookbook/Basics/ Point_AttributesAndSubclassing.pod • Subtypen: https://metacpan.org/pod/ Moose::Util::TypeConstraints • ausführliches Handbuch: https://metacpan.org/pod/ distribution/Moose/lib/Moose/Manual.pod
  • 20. perltidy • formatiert Perl-Quelltext gemäß Konfiguration • funktioniert zufällig ganz gut :-) • es gibt Pakete für alle gängigen Editoren • Test::PerlTidy testet, ob der Code aufgeräumt ist • https://metacpan.org/pod/distribution/Perl-Tidy/bin/ perltidy
  • 21. perlcritic • TIMTOWTDI, aber einige Arten sind besser als andere • perlcritic prüft Quelltext auf Einhaltung von Richtlinien • perlcritic hilft Teams, Codiernormen durchzusetzen • Richtlinien werden programmiert und sind normale Module • Demo: http://perlcritic.com/
  • 22. perlbrew • traditionell kommt Windows ohne Perl und Unix mit einer veralteten Version • ein oder mehrere neuere Perl zu installieren war früher nur händisch möglich • mit perlbrew kann man mehrere Perl-Installationen gleichzeitig auf einem System verwalten • Homepage mit Ninja: https://perlbrew.pl/
  • 23. carton • ähnlich wie pinto/Stratopan (bzw. bundler in ruby) • verwaltet Modulabhängigkeiten für eine Anwendung • kann diese installieren und die Anwendung dann starten • Doku: https://metacpan.org/pod/distribution/Carton/ script/carton • neue Spezifikation von Abhängigkeiten: cpanfile
  • 24. requires 'Plack', '1.0'; # 1.0 or newer requires 'JSON', '>= 2.00, < 2.80';   recommends 'JSON::XS', '2.0'; conflicts 'JSON', '< 1.0';   on 'test' => sub {   requires 'Test::More', '>= 0.96, < 2.0';   recommends 'Test::TCP', '1.12'; };   on 'develop' => sub {   recommends 'Devel::NYTProf'; };   feature 'sqlite', 'SQLite support' => sub {   recommends 'DBD::SQLite'; };
  • 25. Devel::NYTProf • der Profiler • misst Ausführungszeiten des Codes • konvertiert Messdaten in HTML-Seiten • Demo
  • 26. Dist::Zilla • »maximum overkill for CPAN authors« • um ein Modul auf CPAN hochzuladen, muss man viele Dateien anlegen • »eigentlich will ich doch nur dieses Modul hochladen« • die notwendigen Dateien kann Dist::Zilla anlegen (und noch viel mehr) • Demo: autotest
  • 28. Test::More • Standard-Testmodul • bietet einfache Funktionen, um erwartetes mit tatsächliche berechnetem Ergebnis zu vergleichen • ok, is, like, … • kann auch Datenstruktur (einfach) testen • verführt zum Schreiben von Spaghetti-Testcode • Doku: https://metacpan.org/pod/Test::More
  • 29. Test::Class • hilft, Test-Suites durch Objektorientierung zu organisieren • fühlt sich wie JUnit an • die eigentlichen Testfunktionen sind die von Test::More • Doku: https://metacpan.org/pod/Test::Class
  • 30. Test::Spec • hilft beim Schreiben deklarativer Test-Suites • ist an RSpec angelehnt und kommt aus der »behaviour driven development«-Ecke • Ausgabe liest sich wie Standard-TAP • Doku: https://metacpan.org/pod/Test::Spec
  • 31. Test::BDD::Cucumber • ebenfalls von Ruby und BDD • Tests sind fachlich in Klartext geschrieben und werden per Regex auf Testfunktionen abgebildet • Muster: given-when-then, »outside-in« • Tutorial: https://metacpan.org/pod/distribution/Test-BDD- Cucumber/lib/Test/BDD/Cucumber/Manual/Tutorial.pod
  • 32. Devel::Cover • Misst die Testabdeckung: Welcher Anteil meines Codes wird durch Tests abgedeckt? • generiert HTML-Seiten • Plugin for Dist::Zilla existiert • demo: »dzil cover«
  • 33. Test::WWW::Mechanize • benutzt WWW::Mechanize zum automatisierten Testen von Webseiten • spricht HTTP und HTML, aber kein Javascript • emuliert somit keinen ganzen Browser, ist aber dafür sehr schnell • Kandidat für Smoke-Tests • Doku: https://metacpan.org/pod/Test::WWW::Mechanize
  • 34. Brownie • an capybara angelehnt (ruby) • einfache DSL zum Testen von Webseiten • hat als Treiber Mechanize und Selenium • minimal aber vielversprechend • wird anscheinend nicht gepflegt • Doku: https://metacpan.org/pod/Brownie