perl 5 quiz chemnitz edition

147
Perl Quiz

Upload: lichtkind

Post on 05-Dec-2014

409 views

Category:

Documents


0 download

DESCRIPTION

Extra brutales quiz, rund um Perl 5.16, Introspektion, und einige kaum beachtete Nischen von Perl 5

TRANSCRIPT

Page 1: Perl 5 Quiz Chemnitz Edition

Perl Quiz

Page 2: Perl 5 Quiz Chemnitz Edition

Kamelbuch

Page 3: Perl 5 Quiz Chemnitz Edition

Kamel

Page 4: Perl 5 Quiz Chemnitz Edition

Unterm Röntgenblick

Page 5: Perl 5 Quiz Chemnitz Edition

Was, ich bin tot?

Page 6: Perl 5 Quiz Chemnitz Edition

Perl ist überall

Page 7: Perl 5 Quiz Chemnitz Edition

Zeitgemäßes Perl

Page 8: Perl 5 Quiz Chemnitz Edition

Perl als Auto

Page 9: Perl 5 Quiz Chemnitz Edition

Perl 5 Quiz

Page 10: Perl 5 Quiz Chemnitz Edition

Perl 6 unterwegs

Page 11: Perl 5 Quiz Chemnitz Edition

Perl 6 ? - Frag mich!

Page 12: Perl 5 Quiz Chemnitz Edition

Hochstapler bei der Arbeit

Page 13: Perl 5 Quiz Chemnitz Edition

Hochstapler bei der Arbeit

Page 14: Perl 5 Quiz Chemnitz Edition

Hochstapler bei der Arbeit

Wikipedia, Perl-Wikis,Perl 6 Tablets

Perl-Magazin, Perlzeitung, heise.de

Vorträge, CPAN-Module, Kephra, WxPerlBuch

Page 15: Perl 5 Quiz Chemnitz Edition

Mansfelder Land

Page 16: Perl 5 Quiz Chemnitz Edition

Mansfelder Land

Page 17: Perl 5 Quiz Chemnitz Edition

Egypt aka Khem

Page 18: Perl 5 Quiz Chemnitz Edition

Dresden 2005

Page 19: Perl 5 Quiz Chemnitz Edition

2011

Page 20: Perl 5 Quiz Chemnitz Edition

5.14.1

Page 21: Perl 5 Quiz Chemnitz Edition

11 März 2013

Perl 5.16.3

Page 22: Perl 5 Quiz Chemnitz Edition

Mai 2013

Perl 5.18.0

Page 23: Perl 5 Quiz Chemnitz Edition

Mai 2012

Perl 5.16.0

Page 24: Perl 5 Quiz Chemnitz Edition

Richter

Perl 5.16

Page 25: Perl 5 Quiz Chemnitz Edition

Keine Entschuldigung

Perl 5.16App::perlbrew !

Page 26: Perl 5 Quiz Chemnitz Edition

Welches deref. nicht ?

each keys

join splice

Page 27: Perl 5 Quiz Chemnitz Edition

Welches deref. nicht ?

join

Page 28: Perl 5 Quiz Chemnitz Edition

Nicht Bei Jauch

Page 29: Perl 5 Quiz Chemnitz Edition

Schwierigkeit: Brutal

Page 30: Perl 5 Quiz Chemnitz Edition

Testfrage

Page 31: Perl 5 Quiz Chemnitz Edition

Was tut „less“ ?

Page 32: Perl 5 Quiz Chemnitz Edition

Das „less“ - Pragma ?

use less '...';

Page 33: Perl 5 Quiz Chemnitz Edition

Gibt es das wirklich ?

use less 'memory';

Page 34: Perl 5 Quiz Chemnitz Edition

Sicher Digger !

use less 'memory';

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

Page 35: Perl 5 Quiz Chemnitz Edition

Antwort:

Nichts(legacy idea)

Page 36: Perl 5 Quiz Chemnitz Edition

10 Fragen:

Aktuell: 5Introspektion: 3

Kurios: 2

Page 37: Perl 5 Quiz Chemnitz Edition

Fangen Wir An

Page 38: Perl 5 Quiz Chemnitz Edition

Frage 1 !

???

Page 39: Perl 5 Quiz Chemnitz Edition

Geht Das ?

use v5.16;use v5.8;

say 'Booh';

Page 40: Perl 5 Quiz Chemnitz Edition

Leider Ja, ...

use v5.16;use v5.8;

say 'Booh';

Page 41: Perl 5 Quiz Chemnitz Edition

..., aber nicht ab 5.18

use v5.16;use v5.8;

say 'Booh';

Page 42: Perl 5 Quiz Chemnitz Edition

Geht Das ?

Es Geht !

Page 43: Perl 5 Quiz Chemnitz Edition

Geht Das ?

Es Geht (noch) !

Page 44: Perl 5 Quiz Chemnitz Edition

Frage 2 !

???

Page 45: Perl 5 Quiz Chemnitz Edition

Was macht das ?

$[ = 1;

Page 46: Perl 5 Quiz Chemnitz Edition

Wie viele Elemente ?

my @prim;$prim[1] = 2;say scalar @prim;

Page 47: Perl 5 Quiz Chemnitz Edition

Erstes hat Index 0

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

2

Page 48: Perl 5 Quiz Chemnitz Edition

Nun ist 1 Erster

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

1

Page 49: Perl 5 Quiz Chemnitz Edition

Unter 5.14

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

1

Page 50: Perl 5 Quiz Chemnitz Edition

Unter 5.16

Error

Page 51: Perl 5 Quiz Chemnitz Edition

Unter 5.16

use feature 'array_base';

Page 52: Perl 5 Quiz Chemnitz Edition

Unter 5.16

use v5.14;

Page 53: Perl 5 Quiz Chemnitz Edition

Frage 3 !

???

Page 54: Perl 5 Quiz Chemnitz Edition

Wie viele solcher brachte 5.16?

use feature 'array_base';

$[

Page 55: Perl 5 Quiz Chemnitz Edition

Wie viele solcher brachte 5.16?

use feature 'fc';

Page 56: Perl 5 Quiz Chemnitz Edition

Wie viele solcher brachte 5.16?

use feature 'fc';

fc $str; # fold case

Page 57: Perl 5 Quiz Chemnitz Edition

Wie viele solcher brachte 5.16?

use feature 'unicode_eval';

Page 58: Perl 5 Quiz Chemnitz Edition

Wie viele solcher brachte 5.16?

use feature 'unicode_eval';

Page 59: Perl 5 Quiz Chemnitz Edition

Sieht $str als Unicode

use feature 'unicode_eval';

eval $str;

Page 60: Perl 5 Quiz Chemnitz Edition

Sieht $str immer als Bytes

use feature 'evalbytes';

Page 61: Perl 5 Quiz Chemnitz Edition

Sieht $str immer als Bytes

use feature 'evalbytes';

evalbytes $str;

Page 62: Perl 5 Quiz Chemnitz Edition

Wie viele solcher brachte 5.16?

use feature 'current_sub';

Page 63: Perl 5 Quiz Chemnitz Edition

Referenz auf aktuelle sub

use feature 'current_sub';

__SUB__

Page 64: Perl 5 Quiz Chemnitz Edition

Geh zurück zu 5.8

use feature ':5.16';

Page 65: Perl 5 Quiz Chemnitz Edition

Geh zurück zu 5.8

use feature ':default';

Page 66: Perl 5 Quiz Chemnitz Edition

Bedeutet das Gleiche

use feature ':default';

no feature ':all';

Page 67: Perl 5 Quiz Chemnitz Edition

Wie viele solcher brachte 5.16?

8

Page 68: Perl 5 Quiz Chemnitz Edition

Wie viele solcher brachte :

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

Page 69: Perl 5 Quiz Chemnitz Edition

Frage 4 !

???

Page 70: Perl 5 Quiz Chemnitz Edition

Was ergibt „undef ~~ %ash“ ?

?

Page 71: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

7 ~~ [2,7,5]

Page 72: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

7 ~~ [2,7,5]

1

Page 73: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

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

1

Page 74: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef ~~ [2,undef,5]

Page 75: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef ~~ [2,undef,5]

1

Page 76: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

2 ~~ {2 => 5}

Page 77: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

2 ~~ {2 => 5}

1

Page 78: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef ~~ {undef => 5}

Page 79: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef ~~ {undef => 5}

Key ist 'undef'

Page 80: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef ~~ {undef, 5}

Page 81: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef ~~ {undef, 5}

trotzdem undef in Str Kontext umgewandelt

Page 82: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef ~~ {undef, 5}

5 wird unter '' abgelegt say $h{''};

Page 83: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef ~~ {undef, 5}

5 wird unter '' abgelegt undef ne '' (immer)

Page 84: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

Keine Suche kann erfolgreich sein.

Page 85: Perl 5 Quiz Chemnitz Edition

Was macht „undef ~~ %ash“ ?

undef

Page 86: Perl 5 Quiz Chemnitz Edition

Frage 5 !

???

Page 87: Perl 5 Quiz Chemnitz Edition

Wohin geht COMMIT ?

Page 88: Perl 5 Quiz Chemnitz Edition

Wohin geht COMMIT ?

COMMIT

Page 89: Perl 5 Quiz Chemnitz Edition

Vollständiger Syntax

...(*COMMIT)...

Page 90: Perl 5 Quiz Chemnitz Edition

Niemals ohne !

Page 91: Perl 5 Quiz Chemnitz Edition

Zero Length Assertion

…($= ...)...…($<= ...)...

...(?(DEFINE) ...)...

Page 92: Perl 5 Quiz Chemnitz Edition

Steuern Backtracking...(*ACCEPT)......(*COMMIT)...

...(*FAIL)......(*MARK)...

...(*PRUNE)......(*SKIP)......(*THEN)...

Page 93: Perl 5 Quiz Chemnitz Edition

Unterbricht Backtrack

...(*ACCEPT)...

...(*COMMIT)...

Page 94: Perl 5 Quiz Chemnitz Edition

Unterbricht Backtrack

# Erfolg...(*ACCEPT)...

# Mißerfolg...(*COMMIT)...

Page 95: Perl 5 Quiz Chemnitz Edition

Backtracking

/d(a|ak)ch/

dackel

Page 96: Perl 5 Quiz Chemnitz Edition

'h' ne 'k'

/d(a|ak)ch/

'dackel'

Page 97: Perl 5 Quiz Chemnitz Edition

Mit COMMIT

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

'dackel'

Page 98: Perl 5 Quiz Chemnitz Edition

Mißerfolg

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

'dackel'

Page 99: Perl 5 Quiz Chemnitz Edition

Ab 5.10

Bricht Regex während Backtracking als

Mißerfolg ab

Page 100: Perl 5 Quiz Chemnitz Edition

Frage 6 !

???

Page 101: Perl 5 Quiz Chemnitz Edition

Zähl Rückgabewerte von ref ?

ref …;

Page 102: Perl 5 Quiz Chemnitz Edition

Ohne Diese:

ref $obj

'Klassen::Name'

Page 103: Perl 5 Quiz Chemnitz Edition

Referenzarten ?

?

Page 104: Perl 5 Quiz Chemnitz Edition

Referenzarten ?

SCALAR ARRAY HASH

ref \““ ref [] ref {}

Page 105: Perl 5 Quiz Chemnitz Edition

Referenzarten ?

SCALAR ARRAY HASH

CODE REF ““

ref sub {}; ref \\““; ref ““

Page 106: Perl 5 Quiz Chemnitz Edition

Referenzarten ?

SCALAR ARRAY HASH

CODE REF ““

ref qx// eq „Regexp“

Page 107: Perl 5 Quiz Chemnitz Edition

Referenzarten ?

SCALAR ARRAY HASH

CODE REF ““

ref *var{GLOB} eq “GLOB“

Page 108: Perl 5 Quiz Chemnitz Edition

Referenzarten ?

SCALAR ARRAY HASH

CODE REF ““

ref \v5.6 eq “VSTRING“

Page 109: Perl 5 Quiz Chemnitz Edition

Namen der Referenzarten ?

““ VSTRING SCALAR ARRAY HASH

IO CODE Regexp Format REF GLOB

11

Page 110: Perl 5 Quiz Chemnitz Edition

Wieviele Werte hat ref ?

11

Page 111: Perl 5 Quiz Chemnitz Edition

Frage 7 !

???

Page 112: Perl 5 Quiz Chemnitz Edition

Ref-Arten in Symboltabelle ?

?

Page 113: Perl 5 Quiz Chemnitz Edition

Ref-Arten in Symboltabelle ?

*varname{SCALAR}

Page 114: Perl 5 Quiz Chemnitz Edition

Namen der Referenzarten ?

““ VSTRING SCALAR ARRAY HASH

CODE Regexp IO Format REF GLOB

11

Page 115: Perl 5 Quiz Chemnitz Edition

Namen der Referenzarten ?

““ VSTRINGSCALAR ARRAY HASH

CODE Regexp IO Format REF GLOB

11

Page 116: Perl 5 Quiz Chemnitz Edition

Ref-Arten in Symboltabelle ?

SCALAR ARRAY HASH

CODE Regexp IO FORMAT GLOB

8

Page 117: Perl 5 Quiz Chemnitz Edition

Ref-Arten in Symboltabelle ?

SCALAR ARRAY HASH

CODE FORMAT IO GLOB

7

Page 118: Perl 5 Quiz Chemnitz Edition

Ref-Arten in Symboltabelle ?

7

Page 119: Perl 5 Quiz Chemnitz Edition

Frage 8 !

???

Page 120: Perl 5 Quiz Chemnitz Edition

Wie viele Werte liefert caller?

Page 121: Perl 5 Quiz Chemnitz Edition

Wie viele Werte liefert caller !

package, filename, line, subroutine,

hasargs, wantarray, evaltext, is_require,

hints, bitmask, hinthash

Page 122: Perl 5 Quiz Chemnitz Edition

Wie viele Werte liefert caller !

11

Page 123: Perl 5 Quiz Chemnitz Edition

Tip:

say ((caller(0))[0])

Page 124: Perl 5 Quiz Chemnitz Edition

Frage 9 !

???

Page 125: Perl 5 Quiz Chemnitz Edition

Wozu braucht man -s ?

?

Page 126: Perl 5 Quiz Chemnitz Edition

Kommandozeilenparameter

perl -s test.pl -var=2

Page 127: Perl 5 Quiz Chemnitz Edition

So NICHT !

perl test.pl -s -var=2

Page 128: Perl 5 Quiz Chemnitz Edition

So auch nicht !

perl -s -var=2 test.pl

Page 129: Perl 5 Quiz Chemnitz Edition

Nur So !!!

perl -s test.pl -var=2

Page 130: Perl 5 Quiz Chemnitz Edition

Im Programm

perl -s test.pl -var=2

say $var;2

Page 131: Perl 5 Quiz Chemnitz Edition

var Ist aber global

perl -s test.pl -var=2

also: no strict;

Page 132: Perl 5 Quiz Chemnitz Edition

Wozu braucht man -s ?

Zur Einführung von Variablen ins

Programm aus der Shell !

Page 133: Perl 5 Quiz Chemnitz Edition

Frage 10 !

Page 134: Perl 5 Quiz Chemnitz Edition

Was verändert reset ?

Page 135: Perl 5 Quiz Chemnitz Edition

Löscht alle Var

reset 'A-Z'; !!!

Page 136: Perl 5 Quiz Chemnitz Edition

Löscht alle Var

keine mit my oder state deklarierten

Page 137: Perl 5 Quiz Chemnitz Edition

Löscht alle Var

keine mit my oder state deklarierten

my $d = 5;my $e = *d{SCALAR};say $$e; # kommt nix

Page 138: Perl 5 Quiz Chemnitz Edition

Löscht alle Var

keine mit my oder state deklarierten

nur globale oder mit local

Page 139: Perl 5 Quiz Chemnitz Edition

Löscht alle Var

keine mit my oder state deklarierten

nur globale oder mit local, our

Page 140: Perl 5 Quiz Chemnitz Edition

Globale Abgeschaltet

use v5.12;use strict;

nur globale oder mit local, our

Page 141: Perl 5 Quiz Chemnitz Edition

Globale Abgeschaltet

use v5.12;no strict 'refs';

nur globale oder mit local, our

Page 142: Perl 5 Quiz Chemnitz Edition

„lokale“ sind legacy

use v5.12;no strict 'refs';

nur globale oder mit local, our

Page 143: Perl 5 Quiz Chemnitz Edition

Löscht Var in Symbolt.

reset 'A-Z';# doch ni schlimm?

nur globale oder mit local, our

Page 144: Perl 5 Quiz Chemnitz Edition

Löscht Var in Symbolt.

reset 'A-Z';# doch ni schlimm?

löscht auch: %ENV,@INC, @ISA, etc.

Page 145: Perl 5 Quiz Chemnitz Edition

Was verändert reset ?

besser: undef $var;

Page 146: Perl 5 Quiz Chemnitz Edition

Was verändert reset ?

setzt jede $var aufundef

(Zustand vor Benutzung)

Page 147: Perl 5 Quiz Chemnitz Edition

Was verändert reset ?

setzt Variablen in Symboltabelle mit

angegebenen Anfangsbuchstab

en auf undef