126
Perl update 2017

Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl update 2017

Page 2: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 & 6 update

Page 3: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Das Beste aus Perl 6 Defaults

AnfängerhilfenOperatoren

Parallel & AsyncRollenRegex

Grammatiken

Page 4: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 & 6 update

Perl 5.22 .. 5.22.2 5.24.1 neu 6.c praktisch

Page 5: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12
Page 6: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 installieren

App::cpanminus

App::perlbrew

Page 7: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 installierenperlbrew init

perlbrew available

..brew install perl-5.24.1

..ew exec --with perl-5.12

Page 8: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 installierenperlbrew init

perlbrew available

..brew install perl-5.24.1

..ew exec --with perl-5.12

Page 9: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

perlbrew available perl-5.25.10

i perl-5.24.1 perl-5.22.3 perl-5.20.3

.. perl-5.6.2

perl5.005_04 perl5.004_05

Page 10: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

perlbrew available

github.com/perl11/cperl/releases

Page 11: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 installierenperlbrew init

perlbrew available

..brew install perl-5.24.1

..ew exec --with perl-5.12

Page 12: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 installierenperlbrew init

perlbrew available

..brew install perl-5.24.1

..ew exec --with perl-5.12

Page 13: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 installierenperlbrew init

perlbrew available

..brew install perl-5.24.1

..ew exec --with perl-5.12

Page 14: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 update

use v5.22; use feature '...';

use experimental '...';

Page 15: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22

&. |. ^. ~. <<>> qr/\b{...}/ //n

use re 'strict'; \$c = \$d;

Page 16: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22

Unicode 7

Page 17: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.24

Unicode 8

Page 18: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.26

Unicode 9

Page 19: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5

\bword boundary

Page 20: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22 (UTF 7)

\b{wb}word boundary

Page 21: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22 (UTF 7)

\b{sb}sentence boundary

Page 22: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22 (UTF 7)

\b{gcb}grapheme cluster

boundary

Page 23: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.24 (UTF 8)

\b{lb}line boundary

Page 24: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22

use re 'strict';

Page 25: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

use re 'strict';

qr/\xABC/

Page 26: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22

/.../n$& $` $' $1 $2 $+

Page 27: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22

/ \{ /

Page 28: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22

use feature 'bitwise';

&. |. ^. ~.

Page 29: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

zeichenweise

&. AND|. OR ^. XOR~. NOT

Page 30: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5 Perl 6

&. ~& |. ~| ^. ~^ ~. ~!

Page 31: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22 (6)

\$c = \$d;$c := $d;

Page 32: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22

<<>>

Page 33: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.22

<<>> open ..,..,..; <> open .. , .. ;

Page 34: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

say <<>>

perl t.pl "<t.pl"5.024001Can't open <t.pl:..

Page 35: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

say <>

perl t.pl "<t.pl"5.018002…........

Page 36: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.24

->@* << >>qr/\b{lb}/

#!bin/perl6chdir('');

Page 37: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

schneller

/ \{\} /+ - * \

subname();

Page 38: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

seit Perl 5.20

use experimental /postderef

postderef_qq/;

Page 39: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

seit Perl 5.24

use feature /postderef

postderef_qq/;

Page 40: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

adaptiert Perl 6

use feature /postderef

postderef_qq/;

Page 41: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Skalarreferenz

$sref->$*;

${ $sref };

Page 42: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Arrayreferenz

$aref->@*;

@{ $aref };

Page 43: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Arrayreferenz

$aref->$#*;

$#{ $aref };

Page 44: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Arrayreferenz

$aref->@[ ... ];

@$aref[ … ];

Page 45: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Hashreferenz

$href->@{ ... };

@$href{ … };

Page 46: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Hashreferenz

$href->%*;

%{ $href };

Page 47: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Arrayreferenz

$aref->%[ ... ];

%$aref[ … ];

Page 48: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Hashreferenz

$href->%{ ... };

%$href{ … };

Page 49: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Kodereferenz

$href->&*;

&{ $href };

Page 50: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Globferenz

$gref->**;

*{ $gref };

Page 51: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Globferenz

$gref->*{ ... };

*{ $gref }{ … };

Page 52: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

seit Perl 5.24

use feature /postderef

postderef_qq/;

Page 53: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Autodereferenzieren

use experimental 'autoderef';

push $ref, ...;

Page 54: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

lexikalischer Kontext

use experimental 'lexical_topic';

my $_;

Page 55: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Nein

my ($val, our($dir));our (my $x);

Page 56: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Nein

my $;

Page 57: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

private compile time hints

my $^H;

Page 58: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Nein

chdir('');chdir( undef );

Page 59: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Ja

chdir('');chdir( undef );

chdir( );

Page 60: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Nein

/\C/

Page 61: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Nein

/\C/uf8::encode

Page 62: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Nein unter UTF

syswrite($FH,$val);

Page 63: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

UTF Zeilenumbruch

/b{lb}/zugefügt

Page 64: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

UTF Wortumbruch

/\b{wb}/geändert

Page 65: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Zahlen

/ \d{} /deprecated

Page 66: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

match 4{}

/ \d\{\} /

Page 67: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

match {}

/ \{\} /

Page 68: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

muß in 5.26

/ \{\} /

Page 69: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.26

<<~//xx

Page 70: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.26

ref Zuweisungensplit

schneller

Page 71: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.26

say <<~EOF;MoinEOF

Page 72: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 5.26

/ [ 0-9 a-f ] /xx

Page 73: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12
Page 74: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 6 update

bessere Seitemehr docs,

whateverable

Page 75: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 6

committable6: 2016.05 say ‘hello’

<committable6> ¦2016.05: «hello»

Page 76: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 6

unicodable6: ☺

<unicodable6> naxieAlDle, U+263A WHITE SMILING FACE [So] (☺)

Page 77: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Rakudo

schneller (~2x), durchdachter,

bessere Fehler

Page 78: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Mehr Module

seit 6.c:475 → 790

Page 79: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Profiler

perl6 --profile

Page 80: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 6 installieren

perl6.org

rakudo.org

Page 81: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

P6 von installieren

git pullperl Configure.pl --gen-moar --gen-nqp

--backends=moar

makemake install

Page 82: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

PATH gesetzt

perl6 hello.pl

Page 83: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

auch von Hand

rakudobrew

Page 84: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Modul Installer Zef

rakudobrew build zefzef list

Page 85: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Das Übliche | Beste

zef install Task::Star

Page 86: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Sorglospaket

rakudo*

Page 87: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

File IO

sayprompt$in = slurp“datei.txt”;spurt “datei.txt”,$out;lineswords

Page 88: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

my $channel = Channel.new;

$channel.send($msg);my $msg = $channel.recieve; my $msg = $channel.poll; # !block$channel.close;

Channel

Page 89: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

react { whenever $channel { "got a $_".say; }}

Channel

Page 90: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Atrributeclass{ has $.strength; method man(...){...}}role{ has $.strength; method man(...){...}}

Page 91: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Unicode Operatoren« » × ÷ ≤ ≥ ≠ − ∘ ≅

‼ ⁇ π τ ∞ … ‘ ’ 「 」 ⁺ ⁻¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ∘

∅ ∈ ∉ ∋ ∌ ⊆ ⊈ ⊂ ⊄ ⊇ ⊉ ⊃ ⊅ ∩ ≼ ≽ ∪ ∖ ⊖ ⊍ ⊎

Page 92: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Arraymethode elems end keys values kv pairs antipairs join map flat flatmap grep first head tail categorize classify Bool Str Int Numeric Capture pick roll eager reverse rotate sort unique repeated squish reduce produce combinations permutations rotor cross zip sub roundrobin sum fmt from to

Page 93: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Binomialkoeffizient

use v6;

sub infix:<choose> { [*] ($^n ... 0) Z/ 1 .. $^p }

say 5 choose 3;

Page 94: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Binomialkoeffizient

use v6;

sub infix:<choose> { [*] ($^n ... 0) Z/ 1 .. $^p }

say 5 choose 3; # = 5 * 4 / 2! = 105 !

3!∗2!

Page 95: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Infix operator

use v6;

sub infix:<choose> { [*] ($^n ... 0) Z/ 1 .. $^p }

say 5 choose 3; # 5 & 3 sind Parameter

Page 96: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Infix operator

use v6;

sub infix:<choose> { [*] ($^n ... 0) Z/ 1 .. $^p }

say 5 choose 3; # 5 & 3 sind Parameter# keine Signatur → positionale Par. (@_)

Page 97: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Autobenannte Par.

use v6;

sub infix:<choose> { [*] ($^n ... 0) Z/ 1 .. $^p }

say 5 choose 3; # 5 & 3 sind pos. Par.# und landen in autobenannt.: $^n $^p

Page 98: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Autobenannte Par.

use v6;

sub infix:<choose> { [*] ($^n ... 0) Z/ 1 .. $^p }

say 5 choose 3; # 5 & 3 pos. auto. Par.# a .. n .. p .. z → $^n = 5 ; $^p = 3

Page 99: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Param einsetzen

use v6;

sub infix:<choose> { [*] (5 ... 0) Z/ 1 .. 3 }

say 5 choose 3;

Page 100: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

range auflösen

use v6;

sub infix:<choose> { [*] (5 ... 0) Z/ 1, 2, 3}

say 5 choose 3;

Page 101: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

sequence auflösen

use v6;

sub infix:<choose> { [*] (5, 4, 3, 2, 1, 0) Z/ (1, 2, 3) }

say 5 choose 3; # Präzedenz beachten# Z/ eine Zeile über [*]

Page 102: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

zip Metaopetrator Z

use v6;

sub infix:<choose> { [*] (5, 4, 3, 2, 1, 0) Z/ (1, 2, 3)}

say 5 choose 3; # erzeugt Tupel aus links & rechts El.

Page 103: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Z fordert =lang. Listen

use v6;

sub infix:<choose> { [*] (5, 4, 3) Z/ (1, 2, 3)}

say 5 choose 3; # kürze linke Liste

Page 104: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Z aufgelöst

use v6;

sub infix:<choose> { [*] (5 / 1), (4 / 2), (3 / 3)}

say 5 choose 3; # / ist Division

Page 105: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

/ aufgelöst

use v6;

sub infix:<choose> { [*] (5, 2, 1)}

say 5 choose 3; # [ ] ist reduce meta op, * ist Multipl.

Page 106: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

[ ] aufgelöst

use v6;

sub infix:<choose> { (5 * 2 * 1)}

say 5 choose 3; # [ ] ist reduce meta op, * ist Multipl.

Page 107: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

* aufgelöst

use v6;

sub infix:<choose> { 10}

say 5 choose 3; # Hurra wir haben unser Ergebnis

Page 108: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Euler #2

[+] grep * %% 2, (1, 1, *+* ...^ * > 4_000_000);

# Summe der geraden Fibonacci Zahlen bis 4 000 000

Page 109: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Summe

[+] grep * %% 2, (1, 1, *+* ...^ * > 4_000_000);

# Summe der geraden Fibonacci Zahlen bis 4 000 000

Page 110: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

ausgewählter Zahlen

[+] grep * %% 2, (1, 1, *+* ...^ * > 4_000_000);

# Summe der geraden Fibonacci Zahlen bis 4 000 000

Page 111: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

durch 2 teilbar

[+] grep * %% 2, (1, 1, *+* ...^ * > 4_000_000);

# Summe der geraden Fibonacci Zahlen bis 4 000 000

Page 112: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Fibonacci Reihe

[+] grep * %% 2, (1, 1, *+* ...^ * > 4_000_000);

# Summe der geraden Fibonacci Zahlen bis 4 000 000

Page 113: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

bis obere Schranke

[+] grep * %% 2, (1, 1, *+* ...^ * > 4_000_000);

# Summe der geraden Fibonacci Zahlen bis 4 000 000

Page 114: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Twitter::API::Searchuse Subset::Helper;my subset TwitterGeoCode of Str where subset-is { m/^ <[-+]>? \d+ [\. \d+]? ',' <[-+]>? \d+ [\. \d+]? ',' \d+ [\. \d+]? [ 'mi' | 'km' ] $/ }, 'helpsting...latitude,longitude,radius';

Page 115: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Grosser Parserunit grammar XML::Grammar;

rule TOP { ^ <xmldecl>? [ <comment> | <pi> ]* <doctypedecl>? [ <comment> | <pi> ]* <root=element> [ <comment> | <pi> ]* $}

Page 116: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

in 100 Zeilen

token element { '<' \s* <name> \s* <attribute>* [ | '/>' | '>' <child>* '/>' $<name> '>' ]}

Page 117: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Unterelementtoken child { | <element> | <cdata> | <text=textnode> | <comment> | <pi>}

Page 118: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

in Document.pm :

multi method new (Str $xml, :$filename){ ... my $doc = XML::Grammar.parse($xml); … $version = ~$doc<xmldecl><version><value>;

Page 119: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

anderswo

use MONKEY-TYPING;

augment slang MAIN { …}

Page 120: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Ganz woanders

sub circumfix:< ⟪ ⟫> (Str $xml) { XML::Grammar.parse($xml)

}

Page 121: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Ganz woanders

sub circumfix:< ⟪ ⟫> (Str $xml) { XML::Grammar.parse($xml)

}

my $dom = <?xml version=… ⟪ ⟫

Page 122: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Math::Matrix

multi sub circumfix:<|| ||> (Math::Matrix $a --> Numeric) is equiv(&prefix:<!>) is export { $a.norm();

}

my $norm = ||$matrix||;

Page 123: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

C Kode#!/usr/bin/env perl6use soft; # for nowuse Inline;

my sub a_plus_b( Int $a, Int $b ) is inline('C') returns Int {' DLLEXPORT int a_plus_b (int a, int b) { return a + b; }'}

Page 124: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

C Kode

use NativeCall;our sub init() is native('foo') is symbol('FOO_INIT') { * }

Page 125: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Perl 6.c

perl6.orgrosettacode.org/wiki/

category:Perl_6

Page 126: Perl update 2017 - lichtkind.de · Perl 5 installieren perlbrew init perlbrew available..brew install perl-5.24.1..ew exec --with perl-5.12

Jonathan Worthington