Upload
lichtkind
View
819
Download
0
Embed Size (px)
DESCRIPTION
this talk should you prepare you for the new syntax, so you can write Perl 6 today
Citation preview
Perl 6 Regex
Perl 6 Data Structures
Schlaraffenland
Heiliger Gral
Schönheit Und Struktur
Voll Gepackt
Voll Gepackt
Vorsicht Denglisch !
Voll Gepackt
Keine Sorge
:Perl5
Modifikator am Anfang
m :P5 //
Alles wie bei Mama
Papa says
We put the ”regular” back into expression.
Was bleibt ?
Was bleibt ?
Capturing: (…) Escape: \Modifikatoren: i, g
Quantifier: *, +, und ?Alternativen: |match Var.: $/
min. matching Suffix: ??, *?, +?
Vorsicht Falle
Vorsicht Falle
. /smex
[-] //
Any Char
.
Any Char
\N ist der alte .
Any Char
\N ist der alte .
Gegenteil von \n
Any Char
\N ist der neue .
Gegenteil von \n
seit 5.12
Any Char
\N ist der alte .
Punkt meint ”any char”
Any Char
Any Char
Any Char
Kein ”multi line mode”
kein /.../s und /.../m
Kein ”multi line mode”
kein /.../s und /.../m
^ ^^
Kein ”multi line mode”
kein /.../s und /.../m
^ ^^
$ $$
Leerzeichen
immer noch \s
Leerzeichen
immer noch \s
\h | \v
Leerzeichen
immer noch \s
\h | \v
horizontal | vertikal
Leerzeichen
immer noch \s
\h | \v
horizontal = leer + tabs
Oder oder oder?
| ||
Oder oder oder?
| ||
'sub' | 'substr'
Oder oder oder?
| ||
'sub' | 'substr'
'substr' gewinnt
Oder oder oder?
| ||
'sub' || 'substr'
Oder oder oder?
| ||
'sub' || 'substr'
'sub' gewinnt
Regex Metachar
^ ^^ $ $$ | || &
. ** % %%
\ := # (+Klammern)
Regex Metachar
^ ^^ $ $$ | || &
. ** % %%
\ := # (+Klammern)
Regex Metachar
^ ^^ $ $$ | || &
. ** % %%
\ := # (+Klammern)
Regex Metachar
^ ^^ $ $$ | || &
. ** % %%
\ := # (+Klammern)
Quantifikatoren
? + * ** **?
**
% %%
Quantifikator **
'243' ~~ /\d ** 2/
Quantifikator **
'243' ~~ /\d ** 2/
default to *
Quantifikator **
'243' ~~ /\d ** 2/
'243' ~~ /\d ** 2..4/
Quantifikator %
'3,4,5' ~~ /\d+ % ','/
Quantifikator %%
'3,4,5' ~~ /\d+ % ','/
'3,4,5,' ~~ /\d+ %% ','/
Kein ”eval mode”
P5: s/.../.../e
Kein ”eval mode”
P5: s/.../.../e
P6: s/.../{...}/
Kein ”eval mode”
P5: s/.../.../e
P6: s/.../{...}/
s[...] = {…};
Kein ”eval mode”
P5: s/.../.../ee
P6: s/.../{ eval ...}/
s[...] = eval {…};
Perl 6 Regex
kein /.../x
Perl 6 Regex
kein /.../x
ist Standard
Eigene Zeichenklasse
P5: [a-m]
Eigene Zeichenklasse
P5: [a-m]
P6: <[a m]>]
Bereiche Wie Überall
P5: [a-m]
P6: <[a..m]>]
Klammern in Regex
Zeichenklasse <[..]>]
Block {..}
Klammern in Regex
Teilregex (..), [..], <...>
Zeichenklasse <[..]>]
Block {..}
Klammern in Regex
(?:pattern) => [pattern]
(?<key>pattern) => $<key> = <pattern>
(?{code}) => {code}
Horror Vacui
Horror Vacui
kein //
Horror Vacui
kein //
/ <prior> /
Horror Vacui
kein //
/ <prior> /
/ '' / aka / <?> /
Teilfunde
$1
Teilfunde
$1 => $0
Teilfunde
$1 => $0
$0 => $*EXECUTABLE_NAME
Teilfunde
$1 => $0
kein \1 .. \9
Teilfunde
$1 => $0
kein:
\L...\E, \U...\E, \Q...\E
Perl 6 Regex
$1 => $0
{ lc …}, ...
Teilfunde
$1 => $0
$0 ..
Teilfunde
$1 => $0
$0 ..
Teilfunde
$1 => $0
$0 .. $15
Teilfunde
$1 => $0
@() == $0 ..
Teilfunde
$1 => $0
@() == $0 ..
@()[1][2]
Teilfunde
$1 => $0
( () (…) )
@()[0][1]
Regex Variablen
$0 …, @()
$/,
Regex Variablen
$0 …, @()
$/, $/<..>
Regex Variablen
$0 …, @()
$/, $/<..>
$<..>
Regex Variablen
$0 …, @()
$/, $/<..>
$<key> = (...)
Operatoren
Operatoren
rx//
Operatoren
rx//
Warum nicht qr // ?
Operatoren
rx//
Subsprache, ! Quoting
Operatoren
rx//
$~MAIN $~Q $~Regex
Operatoren
~~ rx//
Operatoren
~~ rx//
m// ms// s/// ss/// tr///
Operatoren
~~ rx//
m// ms// s/// ss/// tr///
match comb subst trans
Operatoren
ms// ss///
Operatoren
ms// ss///
m :s // s :ss ///
Operatoren
:sigspace :samespace
m :s // s :ss ///
Operatoren
Leerzeichen trennen Wörter
:sigspace :samespace
m :s // s :ss ///
Modifikatoren
:g
Modifikatoren
:g :i :a :m
Modifikatoren
:g :i :a :m
:ii :aa :mm
Modifikatoren
:g :i :a :m
:x(n) :nth(n)
Modifikatoren
:g :i :a :m
:x(n) :nth(n) :c(n) :p(n)
Modifikatoren
:g :i :a :m
:x(n) :nth(n) :c(n) :p(n)
:r :ov :ex :rw
grammar Methoden
regex {..}
token {..}
rule {..}
grammar Methoden
regex {..}
token {..} regex :ratchet {}
rule {..} regex :ratchet :sigspace {}
grammar Methodengrammar webpage {
rule TOP {<head> <body>} rule head {<meta>|<title>} …
token title { <?after \<title\> .* <?before \<\/title\> }
grammar Methodengrammar webpage {
rule TOP {<head> <body>} rule head {<meta>|<title>} …
token title { <?after \<title\> .* <?before \<\/title\> } $/<head><title>
grammar sind Klassen
$~MAIN $~Q $~Regex
What I Do
perlfoundation.org/perl6/index.cgi?perl_6_tablets
Thank You