SlideShare ist ein Scribd-Unternehmen logo
1 von 147
Downloaden Sie, um offline zu lesen
Perl Quiz
Kamelbuch
Kamel
Unterm Röntgenblick
Was, ich bin tot?
Perl ist überall
Zeitgemäßes Perl
Perl als Auto
Perl 5 Quiz
Perl 6 unterwegs
Perl 6 ? - Frag mich!
Hochstapler bei der Arbeit
Hochstapler bei der Arbeit
Hochstapler bei der Arbeit

  Wikipedia, Perl-Wikis,
       Perl 6 Tablets
Perl-Magazin, Perlzeitung,
         heise.de
 Vorträge, CPAN-Module,
  Kephra, WxPerlBuch
Mansfelder Land
Mansfelder Land
Egypt aka Khem
Dresden 2005
2011
5.14.1
11 März 2013



Perl 5.16.3
Mai 2013



Perl 5.18.0
Mai 2012



Perl 5.16.0
Richter



Perl 5.16
Keine Entschuldigung


  Perl 5.16
App::perlbrew !
Welches deref. nicht ?


    each keys
     join splice
Welches deref. nicht ?




     join
Nicht Bei Jauch
Schwierigkeit: Brutal
Testfrage
Was tut „less“ ?
Das „less“ - Pragma ?

   use less '...';
Gibt es das wirklich ?

   use less 'memory';
Sicher Digger !

use less 'memory';

if ( less->of( 'CPU' ) ) {
    ...
}
elsif ( less->of( 'memory' ) ) {
    ...
}
Antwort:



   Nichts
(legacy idea)
10 Fragen:


    Aktuell: 5
Introspektion: 3
    Kurios: 2
Fangen Wir An
Frage 1 !



  ???
Geht Das ?

use v5.16;
use v5.8;

say 'Booh';
Leider Ja, ...

use v5.16;
use v5.8;

say 'Booh';
..., aber nicht ab 5.18

use v5.16;
use v5.8;

say 'Booh';
Geht Das ?



Es Geht !
Geht Das ?



Es Geht (noch) !
Frage 2 !



  ???
Was macht das ?



    $[ = 1;
Wie viele Elemente ?

my @prim;
$prim[1] = 2;
say scalar @prim;
Erstes hat Index 0


$prim[1] = 2;
say scalar @prim;
         2
Nun ist 1 Erster

$[ = 1;
$prim[1] = 2;
say scalar @prim;
         1
Unter 5.14

$[ = 1;
$prim[1] = 2;
say scalar @prim;
        1
Unter 5.16



Error
Unter 5.16


 use feature
'array_base';
Unter 5.16



use v5.14;
Frage 3 !



  ???
Wie viele solcher brachte 5.16?


      use feature
     'array_base';

              $[
Wie viele solcher brachte 5.16?


   use feature 'fc';
Wie viele solcher brachte 5.16?


   use feature 'fc';

         fc $str;
       # fold case
Wie viele solcher brachte 5.16?


      use feature
    'unicode_eval';
Wie viele solcher brachte 5.16?


      use feature
    'unicode_eval';
Sieht $str als Unicode


  use feature
'unicode_eval';

   eval $str;
Sieht $str immer als Bytes


    use feature
    'evalbytes';
Sieht $str immer als Bytes


    use feature
    'evalbytes';

 evalbytes $str;
Wie viele solcher brachte 5.16?


      use feature
     'current_sub';
Referenz auf aktuelle sub


   use feature
  'current_sub';

     __SUB__
Geh zurück zu 5.8



use feature ':5.16';
Geh zurück zu 5.8


use feature
 ':default';
Bedeutet das Gleiche


  use feature
   ':default';

no feature ':all';
Wie viele solcher brachte 5.16?




              8
Wie viele solcher brachte :

   5.10: 3 (3)
   5.12: 1 (3)
   5.14: 0 (1)
   5.16: 5 (8)
Frage 4 !



  ???
Was ergibt „undef ~~ %ash“ ?




            ?
Was macht „undef ~~ %ash“ ?



     7 ~~ [2,7,5]
Was macht „undef ~~ %ash“ ?



     7 ~~ [2,7,5]

            1
Was macht „undef ~~ %ash“ ?



qr/^b/ ~~ ['habe','basta']

            1
Was macht „undef ~~ %ash“ ?



undef ~~ [2,undef,5]
Was macht „undef ~~ %ash“ ?



undef ~~ [2,undef,5]

            1
Was macht „undef ~~ %ash“ ?



    2 ~~ {2 => 5}
Was macht „undef ~~ %ash“ ?



    2 ~~ {2 => 5}

            1
Was macht „undef ~~ %ash“ ?



undef ~~ {undef => 5}
Was macht „undef ~~ %ash“ ?



undef ~~ {undef => 5}

    Key ist 'undef'
Was macht „undef ~~ %ash“ ?



 undef ~~ {undef, 5}
Was macht „undef ~~ %ash“ ?



 undef ~~ {undef, 5}
  trotzdem undef in Str
  Kontext umgewandelt
Was macht „undef ~~ %ash“ ?



 undef ~~ {undef, 5}
 5 wird unter '' abgelegt
 say $h{''};
Was macht „undef ~~ %ash“ ?



 undef ~~ {undef, 5}
 5 wird unter '' abgelegt
 undef ne '' (immer)
Was macht „undef ~~ %ash“ ?




Keine Suche kann
 erfolgreich sein.
Was macht „undef ~~ %ash“ ?




        undef
Frage 5 !



  ???
Wohin geht COMMIT ?
Wohin geht COMMIT ?



     COMMIT
Vollständiger Syntax



   ...(*COMMIT)...
Niemals ohne !
Zero Length Assertion


       …($= ...)...
       …($<= ...)...
  ...(?(DEFINE) ...)...
Steuern Backtracking
    ...(*ACCEPT)...
    ...(*COMMIT)...
        ...(*FAIL)...
      ...(*MARK)...
     ...(*PRUNE)...
       ...(*SKIP)...
      ...(*THEN)...
Unterbricht Backtrack


   ...(*ACCEPT)...

   ...(*COMMIT)...
Unterbricht Backtrack

        # Erfolg
   ...(*ACCEPT)...
      # Mißerfolg
   ...(*COMMIT)...
Backtracking


 /d(a|ak)ch/

   dackel
'h' ne 'k'

/d(a|ak)ch/

 'dackel'
Mit COMMIT

/d(a|ak)(*COMMIT)ch/

      'dackel'
Mißerfolg

/d(a|ak)(*COMMIT)ch/

      'dackel'
Ab 5.10


Bricht Regex während
   Backtracking als
     Mißerfolg ab
Frage 6 !



  ???
Zähl Rückgabewerte von ref ?




         ref …;
Ohne Diese:

    ref $obj

'Klassen::Name'
Referenzarten ?



      ?
Referenzarten ?

SCALAR ARRAY HASH

  ref ““   ref []   ref {}
Referenzarten ?

SCALAR ARRAY HASH

  CODE       REF       ““

ref sub {}; ref ““; ref ““
Referenzarten ?

SCALAR ARRAY HASH

  CODE     REF     ““

  ref qx// eq „Regexp“
Referenzarten ?

SCALAR ARRAY HASH

   CODE    REF    ““

ref *var{GLOB} eq “GLOB“
Referenzarten ?

SCALAR ARRAY HASH

  CODE    REF     ““

ref v5.6 eq “VSTRING“
Namen der Referenzarten ?

““ VSTRING SCALAR ARRAY HASH

  IO CODE Regexp Format REF
           GLOB


            11
Wieviele Werte hat ref ?




         11
Frage 7 !



  ???
Ref-Arten in Symboltabelle ?




            ?
Ref-Arten in Symboltabelle ?




  *varname{SCALAR}
Namen der Referenzarten ?

““ VSTRING SCALAR ARRAY
          HASH

  CODE Regexp IO Format
       REF GLOB


          11
Namen der Referenzarten ?

       ““ VSTRING
   SCALAR ARRAY HASH

  CODE Regexp IO Format
       REF GLOB


          11
Ref-Arten in Symboltabelle ?

  SCALAR ARRAY HASH

       CODE Regexp
     IO FORMAT GLOB

             8
Ref-Arten in Symboltabelle ?


  SCALAR ARRAY HASH

CODE FORMAT IO GLOB

             7
Ref-Arten in Symboltabelle ?




            7
Frage 8 !



  ???
Wie viele Werte liefert caller?
Wie viele Werte liefert caller !

   package, filename,
     line, subroutine,
   hasargs, wantarray,
   evaltext, is_require,
 hints, bitmask, hinthash
Wie viele Werte liefert caller !




             11
Tip:



say ((caller(0))[0])
Frage 9 !



  ???
Wozu braucht man -s ?




         ?
Kommandozeilenparameter


perl -s test.pl -var=2
So NICHT !


perl test.pl -s -var=2
So auch nicht !


perl -s -var=2 test.pl
Nur So !!!


perl -s test.pl -var=2
Im Programm


perl -s test.pl -var=2

      say $var;
          2
var Ist aber global


perl -s test.pl -var=2

    also: no strict;
Wozu braucht man -s ?

Zur Einführung von
   Variablen ins
Programm aus der
      Shell !
Frage 10 !
Was verändert reset ?
Löscht alle Var



reset 'A-Z'; !!!
Löscht alle Var


keine mit my oder
state deklarierten
Löscht alle Var
 keine mit my oder
 state deklarierten
my $d = 5;
my $e = *d{SCALAR};
say $$e; # kommt nix
Löscht alle Var
keine mit my oder
state deklarierten

nur globale oder mit
       local
Löscht alle Var
keine mit my oder
state deklarierten

nur globale oder mit
     local, our
Globale Abgeschaltet
use v5.12;
use strict;

nur globale oder mit
     local, our
Globale Abgeschaltet
use v5.12;
no strict 'refs';

nur globale oder mit
     local, our
„lokale“ sind legacy
use v5.12;
no strict 'refs';

nur globale oder mit
     local, our
Löscht Var in Symbolt.
reset 'A-Z';
# doch ni schlimm?

nur globale oder mit
     local, our
Löscht Var in Symbolt.
reset 'A-Z';
# doch ni schlimm?

löscht auch: %ENV,
 @INC, @ISA, etc.
Was verändert reset ?


    besser:
   undef $var;
Was verändert reset ?

setzt jede $var auf
       undef
   (Zustand vor
    Benutzung)
Was verändert reset ?
setzt Variablen in
Symboltabelle mit
 angegebenen
Anfangsbuchstab
  en auf undef

Weitere ähnliche Inhalte

Was ist angesagt?

Java Script Ist Anders
Java Script Ist AndersJava Script Ist Anders
Java Script Ist Anders
jlink
 
Mehr Dynamik Durch Skriptsprachen
Mehr Dynamik Durch SkriptsprachenMehr Dynamik Durch Skriptsprachen
Mehr Dynamik Durch Skriptsprachen
jlink
 
Designpatterns in Ruby
Designpatterns in RubyDesignpatterns in Ruby
Designpatterns in Ruby
pfleidi
 
Scala - A Scalable Language
Scala - A Scalable LanguageScala - A Scalable Language
Scala - A Scalable Language
pfleidi
 

Was ist angesagt? (20)

Ruby, Ruby, Ruby!
Ruby, Ruby, Ruby!Ruby, Ruby, Ruby!
Ruby, Ruby, Ruby!
 
Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails Einführung
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit Clojure
 
An Introduction to Ruby
An Introduction to RubyAn Introduction to Ruby
An Introduction to Ruby
 
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
 
Java Script Ist Anders
Java Script Ist AndersJava Script Ist Anders
Java Script Ist Anders
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
 
Mehr Dynamik Durch Skriptsprachen
Mehr Dynamik Durch SkriptsprachenMehr Dynamik Durch Skriptsprachen
Mehr Dynamik Durch Skriptsprachen
 
PHP_Codesniffer
PHP_CodesnifferPHP_Codesniffer
PHP_Codesniffer
 
Devs@Home - Einführung in Go
Devs@Home - Einführung in GoDevs@Home - Einführung in Go
Devs@Home - Einführung in Go
 
Designpatterns in Ruby
Designpatterns in RubyDesignpatterns in Ruby
Designpatterns in Ruby
 
Die WordPress Transients API
Die WordPress Transients APIDie WordPress Transients API
Die WordPress Transients API
 
TYPO3 coding guidelines
TYPO3 coding guidelinesTYPO3 coding guidelines
TYPO3 coding guidelines
 
Ruby is Magic - Episode #7: Closures
Ruby is Magic - Episode #7: ClosuresRuby is Magic - Episode #7: Closures
Ruby is Magic - Episode #7: Closures
 
IPC2017SE - Zend\Expressive Workshop
IPC2017SE - Zend\Expressive WorkshopIPC2017SE - Zend\Expressive Workshop
IPC2017SE - Zend\Expressive Workshop
 
Einführung in die funktionale Programmierung mit Clojure
Einführung in die funktionale Programmierung mit ClojureEinführung in die funktionale Programmierung mit Clojure
Einführung in die funktionale Programmierung mit Clojure
 
Scala - A Scalable Language
Scala - A Scalable LanguageScala - A Scalable Language
Scala - A Scalable Language
 
Prototype 1.7
Prototype 1.7Prototype 1.7
Prototype 1.7
 

Andere mochten auch

Präsentation dachdeckerverband
Präsentation dachdeckerverbandPräsentation dachdeckerverband
Präsentation dachdeckerverband
talk social
 
Datenbanken
Datenbanken Datenbanken
Datenbanken
mrx16
 
Second Life Abschlusspräsentation
Second Life AbschlusspräsentationSecond Life Abschlusspräsentation
Second Life Abschlusspräsentation
Tobias Wuertz
 
Equipo 7 "Corporeidad, Envejecimiento, Autonomia y Seguridad
Equipo 7 "Corporeidad, Envejecimiento, Autonomia y Seguridad Equipo 7 "Corporeidad, Envejecimiento, Autonomia y Seguridad
Equipo 7 "Corporeidad, Envejecimiento, Autonomia y Seguridad
karolinacarni
 
Ciencias tema 2 lucia nerea y laura 5 a
Ciencias tema 2 lucia nerea y laura  5 aCiencias tema 2 lucia nerea y laura  5 a
Ciencias tema 2 lucia nerea y laura 5 a
jlealleon
 
第2回 『マネジメント』 chapter 10
第2回 『マネジメント』 chapter 10第2回 『マネジメント』 chapter 10
第2回 『マネジメント』 chapter 10
Yusuke Onishi
 

Andere mochten auch (17)

Els ànecs
Els ànecsEls ànecs
Els ànecs
 
Präsentation dachdeckerverband
Präsentation dachdeckerverbandPräsentation dachdeckerverband
Präsentation dachdeckerverband
 
Datenbanken
Datenbanken Datenbanken
Datenbanken
 
MMT 27: Social Media für kreative Einzelkämpfer
MMT 27: Social Media für kreative EinzelkämpferMMT 27: Social Media für kreative Einzelkämpfer
MMT 27: Social Media für kreative Einzelkämpfer
 
Honey PC05A (Deutsche Version)
Honey PC05A (Deutsche Version)Honey PC05A (Deutsche Version)
Honey PC05A (Deutsche Version)
 
Second Life Abschlusspräsentation
Second Life AbschlusspräsentationSecond Life Abschlusspräsentation
Second Life Abschlusspräsentation
 
Präsentation didacta 2012
Präsentation didacta 2012Präsentation didacta 2012
Präsentation didacta 2012
 
D kanada unternehmerreise_2.-6.05.11
D kanada unternehmerreise_2.-6.05.11D kanada unternehmerreise_2.-6.05.11
D kanada unternehmerreise_2.-6.05.11
 
Equipo 7 "Corporeidad, Envejecimiento, Autonomia y Seguridad
Equipo 7 "Corporeidad, Envejecimiento, Autonomia y Seguridad Equipo 7 "Corporeidad, Envejecimiento, Autonomia y Seguridad
Equipo 7 "Corporeidad, Envejecimiento, Autonomia y Seguridad
 
Ciencias tema 2 lucia nerea y laura 5 a
Ciencias tema 2 lucia nerea y laura  5 aCiencias tema 2 lucia nerea y laura  5 a
Ciencias tema 2 lucia nerea y laura 5 a
 
imatics ProcessSuite
imatics ProcessSuiteimatics ProcessSuite
imatics ProcessSuite
 
Kluge worte
Kluge worteKluge worte
Kluge worte
 
AUTOCAD DRAWINGS
AUTOCAD DRAWINGSAUTOCAD DRAWINGS
AUTOCAD DRAWINGS
 
第2回 『マネジメント』 chapter 10
第2回 『マネジメント』 chapter 10第2回 『マネジメント』 chapter 10
第2回 『マネジメント』 chapter 10
 
Nuestro arte
Nuestro arteNuestro arte
Nuestro arte
 
Warm up-aufgabe
Warm up-aufgabeWarm up-aufgabe
Warm up-aufgabe
 
Prezentace1
Prezentace1Prezentace1
Prezentace1
 

Ähnlich wie Perl 5 Quiz Chemnitz Edition

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
 

Ähnlich wie Perl 5 Quiz Chemnitz Edition (20)

Perl 6 Regex und Grammars
Perl 6 Regex und GrammarsPerl 6 Regex und Grammars
Perl 6 Regex und Grammars
 
Alexa Skills für Amazon Echo mit PHP entwickeln
Alexa Skills für Amazon Echo mit PHP entwickelnAlexa Skills für Amazon Echo mit PHP entwickeln
Alexa Skills für Amazon Echo mit PHP entwickeln
 
Source-Code-Analyse – ein praktikabler Ansatz
Source-Code-Analyse – ein praktikabler AnsatzSource-Code-Analyse – ein praktikabler Ansatz
Source-Code-Analyse – ein praktikabler Ansatz
 
PHP Sucks?!
PHP Sucks?!PHP Sucks?!
PHP Sucks?!
 
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
 
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
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
31. Teffen der .NET User Group Rhein-Neckar mit Robin Sedlaczek - SpeakRoslyn
31. Teffen der .NET User Group Rhein-Neckar mit Robin Sedlaczek - SpeakRoslyn31. Teffen der .NET User Group Rhein-Neckar mit Robin Sedlaczek - SpeakRoslyn
31. Teffen der .NET User Group Rhein-Neckar mit Robin Sedlaczek - SpeakRoslyn
 
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
 
Php Schulung
Php SchulungPhp Schulung
Php Schulung
 
APIs mit Zend\Expressive erstellen
APIs mit Zend\Expressive erstellenAPIs mit Zend\Expressive erstellen
APIs mit Zend\Expressive erstellen
 
Roslyn - Ein offener Compiler. Ja, und nun?
Roslyn - Ein offener Compiler. Ja, und nun?Roslyn - Ein offener Compiler. Ja, und nun?
Roslyn - Ein offener Compiler. Ja, und nun?
 
Regular Expressions - eine Einführung
Regular Expressions - eine EinführungRegular Expressions - eine Einführung
Regular Expressions - eine Einführung
 
Scala : Monads for the Pragmatic Programmer , Composition with Stackable Traits
Scala : Monads for the Pragmatic Programmer , Composition with Stackable TraitsScala : Monads for the Pragmatic Programmer , Composition with Stackable Traits
Scala : Monads for the Pragmatic Programmer , Composition with Stackable Traits
 
Testing tools
Testing toolsTesting tools
Testing tools
 
Reguläre Ausdrucke (PCRE)
Reguläre Ausdrucke (PCRE)Reguläre Ausdrucke (PCRE)
Reguläre Ausdrucke (PCRE)
 
JAX 2024: Go in der Praxis einsetzen
JAX 2024: Go in der Praxis einsetzenJAX 2024: Go in der Praxis einsetzen
JAX 2024: Go in der Praxis einsetzen
 
Scala und Lift
Scala und LiftScala und Lift
Scala und Lift
 
Mein Freund Der Legacy Code
Mein Freund Der Legacy CodeMein Freund Der Legacy Code
Mein Freund Der Legacy Code
 

Mehr von lichtkind

Bettereditors
BettereditorsBettereditors
Bettereditors
lichtkind
 

Mehr von lichtkind (17)

Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Context
 
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?
 
Neuperl6
Neuperl6Neuperl6
Neuperl6
 
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 Quiz Chemnitz Edition