Änderungen seit Perl 5.8.x
●
Verbesserte Unicode-Unterstützung
– Unicode 6.2
– Bessere Unterstützung in Regulären Ausdrücken
●
Regex-Engine komplett neu geschrieben
●
Geschwindigkeitsverbesserungen
●
Smart-Match
●
Immer weniger „große“ Änderungen
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
DER Grund für
die Verwendung
von Perl
Slide 16
Slide 16 text
28.104 Distributionen
123.870 Module
Slide 17
Slide 17 text
Entwicklung Uploads
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
28.104 Distributionen
123.870 Module
Installation
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
Bei älteren Perls?
Slide 26
Slide 26 text
Ohne root?
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
cpanminus
Slide 29
Slide 29 text
cpanm
Slide 30
Slide 30 text
Keine Abhängigkeiten
Slide 31
Slide 31 text
Pure Perl
Slide 32
Slide 32 text
local::lib
Slide 33
Slide 33 text
$ cpanm Mojolicious
--> Working on Mojolicious
Slide 34
Slide 34 text
$ cpanm Mojolicious
--> Working on Mojolicious
Fetching http://www.cpan.org/authors/id/A/AM/AMS/Mojolicious-4.26.tar.gz
Slide 35
Slide 35 text
$ cpanm Mojolicious
--> Working on Mojolicious
Fetching http://www.cpan.org/authors/id/A/AM/AMS/Mojolicious-4.26.tar.gz
Configuring Mojolicious-4.26 ... OK
Slide 36
Slide 36 text
$ cpanm Mojolicious
--> Working on Mojolicious
Fetching http://www.cpan.org/authors/id/A/AM/AMS/Mojolicious-4.26.tar.gz
Configuring Mojolicious-4.26 ... OK
Building and testing Mojolicious-4.26 ... OK
Slide 37
Slide 37 text
$ cpanm Mojolicious
--> Working on Mojolicious
Fetching http://www.cpan.org/authors/id/A/AM/AMS/Mojolicious-4.26.tar.gz
Configuring Mojolicious-4.26 ... OK
Building and testing Mojolicious-4.26 ... OK
Successfully installed Mojolicious-4.26 (upgraded from 4.23)
1 distribution installed
Slide 38
Slide 38 text
http://cpanmin.us
Slide 39
Slide 39 text
curl -L http://cpanmin.us
> cpanm
Slide 40
Slide 40 text
curl -L http://cpanmin.us
| perl - --self-upgrade
Slide 41
Slide 41 text
Perl 5.8.8
Slide 42
Slide 42 text
Perl 5.8.8
Perl 5.14.2
Slide 43
Slide 43 text
Perl 5.8.8
Perl 5.14.2
Slide 44
Slide 44 text
plenv
Slide 45
Slide 45 text
plenv install 5.14.2
Slide 46
Slide 46 text
5.14.2
Slide 47
Slide 47 text
plenv install 5.18.0
Slide 48
Slide 48 text
5.14.0
Slide 49
Slide 49 text
.plenv_version
PLENV_VERSION
Slide 50
Slide 50 text
$ cat community/.plenv-version
5.18.0
$ cat community/test.pl
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
say $];
$ perl community/test.pl
5.018000
Slide 51
Slide 51 text
$ cat .plenv-version
5.14.0
$ cat test.pl
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
say $];
$ perl test.pl
5.014000
Slide 52
Slide 52 text
$ cat community/.plenv-version
5.18.0
$ cat community/test.pl
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
say $];
$ PLENV_VERSION=5.14.0 \
perl community/test.pl
5.014000
$ dzil setup
What's your name? Renee Baecker
What's your email address? [email protected]
Who, by default, holds the copyright on your code? [Renee Baecker]:
What license will you use by default (Perl_5, BSD, etc.)? [Perl_5]:
Do you want to enter your PAUSE account details? [y/N]:
config.ini file created!
Slide 68
Slide 68 text
$ dzil new FrOSCon
Slide 69
Slide 69 text
$ dzil new FrOSCon
[DZ] making target dir /home/reneeb/FrOSCon
[DZ] writing files to /home/reneeb/FrOSCon
[DZ] dist minted in ./FrOSCon
$ tree FrOSCon/
FrOSCon/
├── dist.ini
└── lib
└── FrOSCon.pm
1 directory, 2 files
Slide 70
Slide 70 text
$ dzil new FrOSCon
[DZ] making target dir /home/reneeb/FrOSCon
[DZ] writing files to /home/reneeb/FrOSCon
[DZ] dist minted in ./FrOSCon
$ tree FrOSCon/
FrOSCon/
├── dist.ini
└── lib
└── FrOSCon.pm
1 directory, 2 files
Standard Perl5-OO
•
Nachträglich eingebaut
•
Kann manche Paradigmen nicht erfüllen
•
Flexibel (zu flexibel?!?)
•
Viel Schreibarbeit bleibt beim Autor hängen
Slide 89
Slide 89 text
TIMTOWTDI
Slide 90
Slide 90 text
Moose
Slide 91
Slide 91 text
TIMTOWTDI
BSCINABTE
Slide 92
Slide 92 text
package FrOSCon::Person;
use Moose;
Slide 93
Slide 93 text
package FrOSCon::Person;
use Moose;
has 'lastname';
has 'firstname';
Slide 94
Slide 94 text
package FrOSCon::Person;
use Moose;
has 'lastname' => (is => 'ro', isa => 'Str' );
has 'firstname' => (is => 'ro', isa => 'Str' );
Slide 95
Slide 95 text
use FrOSCon::Person;
my $sperson = FrOSCon::Person->new(
firstname => 'Renee',
lastname => 'Baecker',
);
Slide 96
Slide 96 text
use FrOSCon::Person;
my $person = FrOSCon::Person->new(
firstname => 'Renee',
lastname => 'Baecker',
);
print $person->firstname;
Slide 97
Slide 97 text
package FrOSCon::Speaker;
use Moose;
extends 'FrOSCon::Person';
has 'talks' => (is => 'rw', isa => 'ArrayRef' );
has 'email' => (is => 'rw', isa => 'Str' );
Slide 98
Slide 98 text
use FrOSCon::Speaker;
my $speaker = FrOSCon::Speaker->new(
firstname => 'Renee',
lastname => 'Baecker',
talks => [
'The Renaissance of Perl',
],
);
$speaker->email( '[email protected]' );
Slide 99
Slide 99 text
Validierung von Daten
Slide 100
Slide 100 text
use Moose::Util::TypeConstraints;
Slide 101
Slide 101 text
use Moose::Util::TypeConstraints;
use Regexp::Common qw(Email::Address);
Slide 102
Slide 102 text
use Moose::Util::TypeConstraints;
use Regexp::Common qw(Email::Address);
subtype EMail =>
as 'Str' =>
where { /^$RE{Email}{Address}$/ };
Slide 103
Slide 103 text
use Moose::Util::TypeConstraints;
use Regexp::Common qw(Email::Address);
subtype EMail =>
as 'Str' =>
where { /^$RE{Email}{Address}$/ };
has 'email' => (is => 'rw', isa => 'EMail');
Slide 104
Slide 104 text
use FrOSCon::Speaker;
my $speaker = FrOSCon::Speaker->new(
firstname => 'Renee',
lastname => 'Baecker',
talks => [
'The Renaissance of Perl',
],
);
$speaker->email( '[email protected]' );
OK
Slide 105
Slide 105 text
use FrOSCon::Speaker;
my $speaker = FrOSCon::Speaker->new(
firstname => 'Renee',
lastname => 'Baecker',
talks => [
'The Renaissance of Perl',
],
);
$speaker->email( '[email protected]@froscon' );
FAIL
Slide 106
Slide 106 text
No content
Slide 107
Slide 107 text
sub buy_ticket {
my ($self, $type, $day, $online) = @_;
# …
}
Slide 108
Slide 108 text
sub buy_ticket {
my ($self, $type, $day, $online) = @_;
# …
}
Slide 109
Slide 109 text
sub buy_ticket {
my ($self, $type, $day, $online) = @_;
# …
}
my $date = '2013-08-25';
$date =~ m{
(\d{4})- # year
(\d{2})- # month
(\d{2}) # day
}x;
say sprintf “today is day %s of month %s in year %s”,
$3, $2, $1;
Slide 163
Slide 163 text
my $date = '2013-08-25';
$date =~ m{
(\d{4})- # year
(
(\d{2}) | # month nr
(\w+) # monthname
)-
(\d{2}) # day
}x;
say sprintf “today is day %s of month %s in year %s”,
$3, $2, $1;
Slide 164
Slide 164 text
• Nummern sind Schall
und Rauch, Namen
bleiben ;-)
• Syntax (?...)
• Werte landen im
Hash %+
Slide 165
Slide 165 text
my $date = '2013-08-25';
$date =~ m{
(?\d{4})-
(?
(\d{2}) |
(\w+)
)-
(?\d{2})
}x;
say sprintf “today is day %s of month %s in year %s”,
$+{day}, $+{month}, $+{year};
Perl@FrOSCon C125
Talk
10:05 Perl 6 OO vs. Perl 5 Moose
10:50 Perl & LaTeX
11:25 Complete Programming
12:00 Testing DBI Drivers Conformance
12:35 Perl 5 to Perl 6 Nuggets Part I
13:00 DuckDuckHack
14:00 Perl 5 to Perl 6 Nuggets Part II
14:35 Monitoring with Perl and Unix::Statgrab
15:20 Real Life Perl – Glueing The Pieces Together
15:45 Regex für Könner
16:20 Moving The Needle