life with perl

128
Life with Perl

Upload: andysh

Post on 18-Nov-2014

501 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Life With Perl

Life with Perl

Page 2: Life With Perl

Life with Perlboth 5 and 6

Page 3: Life With Perl

Life with Perlboth 5 and 6

5 stands for both 5.8.8 and 5.10

Page 4: Life With Perl

Versions of Perl (perlhist)

Page 5: Life With Perl

Lyrical digression

Page 6: Life With Perl
Page 7: Life With Perl

Time measuring

Page 8: Life With Perl

5.000 17 October 1994

5.6.0 22 March 2000

5.8.0 18 July 20025.8.8 31 January 2006

5.10 18 December 2008

Versions of Perl (perlhist)

Page 9: Life With Perl

5.000 17 October 1994

5.6.0 22 March 2000

5.8.0 18 July 20025.8.8 31 January 2006

5.10 18 December 2008

6.0 ?

Versions of Perl (perlhist)

Page 10: Life With Perl

5.000 17 October 1994

5.6.0 22 March 2000

5.8.0 18 July 20025.8.8 31 January 2006

5.10 18 December 2008

6.0 Сhristmas

Versions of Perl (perlhist)

Page 11: Life With Perl

5.000 17 October 1994

5.6.0 22 March 2000

5.8.0 18 July 20025.8.8 31 January 2006

5.10 18 December 2008

6.0 2000

Versions of Perl (perlhist)

Page 12: Life With Perl

Perl 6 docs, specs, thoughts

RFCsApocalypsesExegesesSynopses

Page 13: Life With Perl

5 != 6

Page 14: Life With Perl

Lyrical digression

Page 15: Life With Perl

Perl 5 mess

Page 16: Life With Perl

Perl 6 clean-up

Page 17: Life With Perl

5 != 64 != 5

Page 18: Life With Perl

Programme (script?)

Compiler

Virtual machine (VM)

Byte-code

Page 19: Life With Perl

Programme (script?)

Compiler

Virtual machine (VM)

Byte-code

Page 20: Life With Perl

BasicForthJakoLispm4OokPerl 6Perl 5PythonRubySchemeTcl

PASM

IMC

PBC

PIR

PIL

Page 21: Life With Perl

C#J#VB.NETJScript.NETmanaged C++

Ada (A#)F#COBOL.NETFORTRAN.NETPerl.NET

CLR

Page 22: Life With Perl

Java

JRE

Page 23: Life With Perl

Most practical compilers

languages/perl6 in parrot.tar.gz

Perl6::* on CPAN

PUGS

Rakudo

Page 24: Life With Perl

Most practical compilers

Rakudo

= = parrot/langauges/perl6

Page 25: Life With Perl

Most practical compilers

Rakudo

= = parrot/langauges/perl6 + years

Page 26: Life With Perl

PUGS. Made with Haskell

Page 27: Life With Perl

PUGS. Made with Haskell

Most full coverage of Perl 6 specs

Page 28: Life With Perl

PUGS. Made with Haskell

Most full coverage of Perl 6 specs

Needs latest version of GHC

Page 29: Life With Perl
Page 30: Life With Perl

It is not lyrics

Page 31: Life With Perl

PUGS. Made with Haskell

Most full coverage of Perl 6 specs

Needs latest version of GHC

Slow

Page 32: Life With Perl

PUGS. Made with Haskell

Most full coverage of Perl 6 specs

Needs latest version of GHC

Slow

Contains tests

Page 33: Life With Perl

Perl 6

Page 34: Life With Perl

perl.it

Page 35: Life With Perl

perl.it!

Page 36: Life With Perl

UTF-8

Page 37: Life With Perl

say and print

say"俄罗斯新闻网";

Page 38: Life With Perl

say and print

say"俄罗斯新闻网";

"俄罗斯新闻网".say;

Page 39: Life With Perl

say and print

say"俄罗斯新闻网";

"俄罗斯新闻网".say;

"俄罗斯新闻网".say();

Page 40: Life With Perl

say and print

say"string";

say123;

say(12+45);

Page 41: Life With Perl

say and print

say"string";

say123;

say(12+45);

"string".say;

123.say;

Page 42: Life With Perl

say and print

say"string";

say123;

say(12+45);

"string".say;

123.say;

3.14.say;

Page 43: Life With Perl

String length

my$str="俄罗斯新闻网";

say$str.length;

Page 44: Life With Perl

String length

my$str="俄罗斯新闻网";

say$str.length;

say$str.chars;6say$str.bytes;18

Page 45: Life With Perl

String concatenation

my$string_a="abcde";

my$string_b="fghij";

print$string_a.$string_b;5

print$string_a~$string_b;6

Page 46: Life With Perl

Lyrical digression

Page 47: Life With Perl

Different wishes

Page 48: Life With Perl

Different wishes

Page 49: Life With Perl

Variables

my$string="abcde";

my@array=(10,20,30);

my%hash=("one"=>10,"two"=>20);

Page 50: Life With Perl

Variables

my$string="abcde";

my@array=(10,20,30);

my%hash=("one"=>10,"two"=>20);

print$string;

print$string;

5

6

Page 51: Life With Perl

Variables

my$string="abcde";

my@array=(10,20,30);

my%hash=("one"=>10,"two"=>20);

5

6

print$array[1];

print@array[1];

Page 52: Life With Perl

Variables

my$string="abcde";

my@array=(10,20,30);

my%hash=("one"=>10,"two"=>20);

5

6

print$hash{"one"};

print%hash{"one"};

Page 53: Life With Perl

Variables

my$string="abcde";

my@array=(10,20,30);

my%hash=("one"=>10,"two"=>20);

5

6

print$hash{"one"};

print%hash{"one"};print%hash<one>;

print%hash<onetwo>;

Page 54: Life With Perl

Contexts

my@array=(5..10);

Page 55: Life With Perl

Contexts

my@array=(5..10);

say~@array; 5 6 7 8 9 10

Page 56: Life With Perl

Contexts

my@array=(5..10);

say~@array; 5 6 7 8 9 10

say+@array;6

Page 57: Life With Perl

Contexts

my@array=(5..10);

say~@array; 5 6 7 8 9 10

sayint@array;6

Page 58: Life With Perl

Contexts

my@array=(5..10);

say~@array; 5 6 7 8 9 10

sayint@array;6

say~hash@array;5678910

Page 59: Life With Perl

Contexts

my$value=100;

say$value;100

Page 60: Life With Perl

Contexts

my$value=100;

say$value;100

say?$value;1

Page 61: Life With Perl

Subroutines

subcallme($first,$second){say"$first,$second";}

callme(10,20);

Page 62: Life With Perl

Subroutines

subcallme($first,$second){say"$first,$second";}

callme(10,20);callme10,20;

Page 63: Life With Perl

Subroutines

subcallme($first,$second){say"$first,$second";}

callme(10,20);callme10,20;callme(10,20);

Page 64: Life With Perl

Subroutines

subcallme($first,$second){say"$first,$second";}

callme(10,20);callme10,20;callme(10,20);callme(second=>20,first=>10);

Page 65: Life With Perl

Subroutines

subcallme(@a,@b){say@a~","~@b;}

my@odd=(1,3);my@even=(2,4);callme@odd,@even;13,24

Page 66: Life With Perl

Subroutinessubcallme($argisrw)

subinc($value,$step=1)

Page 67: Life With Perl

Anonymous subroutines

my$print_line_break={print"<br/>";}

$print_line_break();

Page 68: Life With Perl

Anonymous subroutines

my$square=‐>($value){$value**2;}

say$square(20);400

Page 69: Life With Perl

Anonymous subroutines

my$square=‐>($value){$value**2;}

say$square(20);400say$square20;

Page 70: Life With Perl

Cycles

for@list{say$_;}

Page 71: Life With Perl

Cycles

for@list‐>$value{say$value;}

Page 72: Life With Perl

Cycles

for@list‐>$value{say$value;}

for@list,sub($value){say$value;}

Page 73: Life With Perl

Hyperoperators

my@odd=(1,3,5);my@even=(2,4,6);

my@sum=@odd»+«@even;say~@sum;3711

Page 74: Life With Perl

Hyperoperators

my@odd=(1,3,5);my@even=(2,4,6);

my@sum=@odd»+«@even;say~@sum;

my@next=@sum»+«1;say~@next;

Page 75: Life With Perl

Hyperoperators

my@odd=(1,3,5);my@even=(2,4,6);

my@sum=@odd>>+<<@even;say~@sum;

my@next=@sum>>+<<1;say~@next;

Page 76: Life With Perl

Hyperoperator monument

Page 77: Life With Perl

Junctions

say"yes"if20==10|20|30;

say"yes"if20==any(10,20,30);

Page 78: Life With Perl

Junctions

say"yes"if20==10|20|30;

say"yes"if20==any(10,20,30);

say"no"if21==none(10,20,30);

Page 79: Life With Perl

multi functions

multisubthe_name($scalar){...}multisubthe_name($s1,$s2){...}multisubthe_name(@array){...}

Page 80: Life With Perl

multi functions

multisubthe_name($scalar){...}multisubthe_name($s1,$s2){...}multisubthe_name(@array){...}

the_name($some_value);the_name($value1,$value2);the_name(@some_array);

Page 81: Life With Perl

Overriding operators

multiinfix:<+>($a,$b){return$a‐$b;}

say10+20;‐10

Page 82: Life With Perl

Overriding operators

multipostfix:<@>($power){return2**$power;}

say8@;256

Page 83: Life With Perl

Overriding operators

subpostfix:<power_of_two>($power){return2**$power;}

say8power_of_two;256

Page 84: Life With Perl

switch and case

given($x){when"a"{say...}when"b"{say...}when/<[a‐z]>/{...}default{...}}

Page 85: Life With Perl

Smart matching

~~

Page 86: Life With Perl

Smart matching

$a~~$b==

$b~~$a

Page 87: Life With Perl

Smart matching

my$b;

$b~~undef

!defined$b

Page 88: Life With Perl

Smart matching

my$c='abc';

$c~~'abc'

$ceq'abc'

Page 89: Life With Perl

Smart matching

my@a=(1..3);my@b=(1..3);

@a~~@b

1==1&&2==2&&3==3

Page 90: Life With Perl

Smart matching

my@f=('a'..'f');

@f~~'d'

grep{$_eq'd'}@f

Page 91: Life With Perl

Smart matching

my%h=(a=>'alpha',b=>'beta');

%h~~'a'

exists$h{'a'}

Page 92: Life With Perl

Smart matchingmy%h=(a=>'alpha',b=>'beta');my%hh=(b=>1,a=>2);

%h~~%hh[sortkeys%h]~~[sortkeys%hh]

Page 93: Life With Perl

Smart matching

Works

in Perl 5.10!

Page 94: Life With Perl

People think of Perl 6

Page 95: Life With Perl

I think of today's Perl 6

Page 96: Life With Perl

Classes

classAlphabet{}

my$abc=newAlphabet;

Page 97: Life With Perl

Classes

classAlphabet{has$.Name;has$Length;}

my$abc=newAlphabet;$abc.Name="Latin";$abc.Length=26;

Page 98: Life With Perl

Classes

classAlphabet{...methodinfo{say"$.Name;$Length";}}

$abc.info();

Page 99: Life With Perl

Classes

classAlphabet{methodBUILD{...}methodDESTROY{...}}

Page 100: Life With Perl

Inheritance

classCharactersisAlphabet{}

my$chars=newCharacters;$chars.info();

Page 101: Life With Perl

Inheritance

classCharactersisAlphabetisUniqueisNonLatin{}

Page 102: Life With Perl

Roles (interfaces?)

roleHaveName{has$Name;methodGetName{return$.Name;}}

classNamedAbcdoesHaveName{}

Page 103: Life With Perl

June 2003

Page 104: Life With Perl

June 2004

Page 105: Life With Perl

June 2004 2005

Page 106: Life With Perl

2005

Page 107: Life With Perl

2007?

Page 108: Life With Perl

2008?

Page 109: Life With Perl

Cancelled

Page 110: Life With Perl
Page 111: Life With Perl

Perl 6in

Perl 5.10

Page 112: Life With Perl

usefeatureqw(sayswitchstate);

Page 113: Life With Perl

subf{state$c;say++$c;}f();f();f();

123

Page 114: Life With Perl

//

defined-or

Page 115: Life With Perl

my$c=0;my$d=$c//3;say$d;0

my$e=0;my$f=$e||4;say$f;4

Page 116: Life With Perl

Perl 6 today is

Rakudowww.rakudo.org

Page 117: Life With Perl

The Way Of The Camel

Rakudа-do

Page 118: Life With Perl

Rakudo

cdlanguages/perl6/makeperl6

Page 119: Life With Perl

Binding

my$hour=14;my$summertime:=$hour;

say$hour;$summertime++;

say$hour;

Page 120: Life With Perl

.WHATclassLanguage{has$!Name;

methodgive_name($newname){$!Name=$newname;}

methodsay_name{say"Thisis$!Name";}}

my$lang=Language.new();$lang.give_name('Perl6');$lang.say_name();

Page 121: Life With Perl

.WHATclassLanguage{}

my$lang=Language.new();

say$lang.WHAT;

sayLanguage.WHAT;

Page 122: Life With Perl

say'before';try{die'Bye!';}say'after';

try

Page 123: Life With Perl

regexlanguage{Perl|XML};

say"ok"

if'Perl'~~/<language>/;

say"notok"

unless'PHP'~~/<language>/;

Regexes

Page 124: Life With Perl

More

classFoo{};

myFoo$x;

$x=Foo.new();

Page 125: Life With Perl

More

async{

my@sum=@odd>>+<<@even;

}

Page 126: Life With Perl

More

atomic{

$a‐=100;

$b+=100;

}

Page 127: Life With Perl
Page 128: Life With Perl

__END__

Andrew [email protected] | http://andy.sh

DORS/CLUC, Zagreb, 2008