Introducing perl6

2,782 views

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
2,782
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
45
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Introducing perl6

  1. 1. Introducing Perl 6 Nuno Carvalho <smash@cpan.org> May 22, 2010 Introducing Perl 6 Portuguese Perl Workshop 2010
  2. 2. Introduction • Perl 6 is a specification Introducing Perl 6 Portuguese Perl Workshop 2010
  3. 3. Introduction • Perl 6 is a specification • Several implementations Introducing Perl 6 Portuguese Perl Workshop 2010
  4. 4. Introduction • Perl 6 is a specification • Several implementations • Anything that passes the spec test Introducing Perl 6 Portuguese Perl Workshop 2010
  5. 5. Introduction • Perl 6 is a specification • Several implementations • Anything that passes the spec test • Perl 6 is not a replacement for Perl 5 Introducing Perl 6 Portuguese Perl Workshop 2010
  6. 6. Perl6::Variables • scalar values 1 $scalar Introducing Perl 6 Portuguese Perl Workshop 2010
  7. 7. Perl6::Variables • scalar values 1 $scalar • arrays 1 @array 2 @array[$i] Introducing Perl 6 Portuguese Perl Workshop 2010
  8. 8. Perl6::Variables • scalar values 1 $scalar • arrays 1 @array 2 @array[$i] • hash tables 1 %hash 2 %hash{$key} Introducing Perl 6 Portuguese Perl Workshop 2010
  9. 9. Perl6::Operators • the assignment operator (=) 1 $string = ’Perl’; Introducing Perl 6 Portuguese Perl Workshop 2010
  10. 10. Perl6::Operators • the assignment operator (=) 1 $string = ’Perl’; • the dot operator (.) 1 $object.method; 2 $file.lines; 3 @array.sort; Introducing Perl 6 Portuguese Perl Workshop 2010
  11. 11. Perl6::Operators • the list operator (,) 1 @array = 1, 2, 3, 4; • the fat-arrow operator (=>) 1 $pair = ’color’ => ’black’; 2 $pair.key; # color 3 $pair.value; # black Introducing Perl 6 Portuguese Perl Workshop 2010
  12. 12. Perl6::Operators • string concatenation (˜) 1 ’Pe’ ˜ ’rl’; # Perl Introducing Perl 6 Portuguese Perl Workshop 2010
  13. 13. Perl6::Operators • string concatenation (˜) 1 ’Pe’ ˜ ’rl’; # Perl • the max operator (max) 1 1 max 2; # returns 2 2 1 max 2 max 3; # returns 3 Introducing Perl 6 Portuguese Perl Workshop 2010
  14. 14. Perl6::Operators • string concatenation (˜) 1 ’Pe’ ˜ ’rl’; # Perl • the max operator (max) 1 1 max 2; # returns 2 2 1 max 2 max 3; # returns 3 • the reduction meta operator ([]) 1 [max] 1, 2; # returns 2 2 [+] 1, 2; # returns 3 Introducing Perl 6 Portuguese Perl Workshop 2010
  15. 15. Perl6::Operators • the repetition operator (x) 1 ’a’ x 3; # ’aaa’ Introducing Perl 6 Portuguese Perl Workshop 2010
  16. 16. Perl6::Operators • the repetition operator (x) 1 ’a’ x 3; # ’aaa’ • the ternary operator (?? !!) 1 $n == 0 ?? ’zero’ !! ’non-zero’; Introducing Perl 6 Portuguese Perl Workshop 2010
  17. 17. Perl6::Operators • the repetition operator (x) 1 ’a’ x 3; # ’aaa’ • the ternary operator (?? !!) 1 $n == 0 ?? ’zero’ !! ’non-zero’; • another list constructor (<>) 1 @week = <Mon Tue Wed Thu Fri>; Introducing Perl 6 Portuguese Perl Workshop 2010
  18. 18. Perl6::Operators • the yadayada operator (...) 1 sub do_something() { ... } Introducing Perl 6 Portuguese Perl Workshop 2010
  19. 19. Perl6::Operators • the yadayada operator (...) 1 sub do_something() { ... } • the ternary operator (?? !!) 1 $n == 0 ?? ’zero’ !! ’non-zero’; Introducing Perl 6 Portuguese Perl Workshop 2010
  20. 20. Perl6::Operators • the yadayada operator (...) 1 sub do_something() { ... } • the ternary operator (?? !!) 1 $n == 0 ?? ’zero’ !! ’non-zero’; • the arrow operator (->) 1 for @week -> @day { ... } Introducing Perl 6 Portuguese Perl Workshop 2010
  21. 21. Perl6::Subroutines • typical subroutine 1 sub hello() { 2 say ’hello world’; 3 } 4 5 hello(); # says hello world Introducing Perl 6 Portuguese Perl Workshop 2010
  22. 22. Perl6::Subroutines • anonymous subroutine 1 my $hello = sub { 2 say ’hello world’; 3 } 4 5 $hello.(); # says hello world Introducing Perl 6 Portuguese Perl Workshop 2010
  23. 23. Perl6::Subroutines • passing values 1 sub hello($name) { 2 say "hello $name"; 3 } 4 5 hello(’p6’); # says hello p6 Introducing Perl 6 Portuguese Perl Workshop 2010
  24. 24. Perl6::Subroutines • passing a read-write reference 1 sub inc($counter is rw) { 2 $counter++; 3 } 4 5 my $c = 0; 6 inc($c); # $c is 1 7 inc($c); # $c is 2 Introducing Perl 6 Portuguese Perl Workshop 2010
  25. 25. Perl6::Subroutines • passing a copy of value 1 sub inc($counter is copy) { 2 $counter++; 3 } 4 5 my $c = 0; 6 inc($c); # $c is 0 7 inc($c); # $c is 0 Introducing Perl 6 Portuguese Perl Workshop 2010
  26. 26. Perl6::Subroutines • slurpy arguments 1 sub inc(*$counter is copy) { 2 XXX 3 } 4 5 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  27. 27. Perl6::Subroutines • passing a list 1 sub check(@words) { ... } Introducing Perl 6 Portuguese Perl Workshop 2010
  28. 28. Perl6::Subroutines • passing a list 1 sub check(@words) { ... } • passing an hash 1 sub check(%hash) { ... } Introducing Perl 6 Portuguese Perl Workshop 2010
  29. 29. Perl6::Multi 1 multi add(Real $x, Real $y) { ... } 2 multi add(Int $x, Int $y) { ... } 3 multi add($x, $y) { ... } 4 multi add($x where $x>0, $y) { ... } Introducing Perl 6 Portuguese Perl Workshop 2010
  30. 30. Perl6::Objects 1 class Point { 2 has $!x; 3 has $!y; 4 has $.color; 5 6 method new($x, $y, $color) { ... } 7 method distance($x, $y) { ... } 8 } Introducing Perl 6 Portuguese Perl Workshop 2010
  31. 31. Perl6::Roles 1 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  32. 32. Perl6::Regexes 1 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  33. 33. Perl6::Regexes 1 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  34. 34. Perl6::Grammars 1 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  35. 35. Rakudo • one Perl 6 implementation • passes 79% of the test spec • runs on Parrot VM • http://www.rakudo.org Introducing Perl 6 Portuguese Perl Workshop 2010
  36. 36. Get your feet wet • install rakudo 1 $ git clone ... 2 $ perl Configure.pl --gen-parrot 3 $ make 4 $ make test 5 $ make spectest Introducing Perl 6 Portuguese Perl Workshop 2010
  37. 37. Run Perl 6 code • interactive mode 1 rakudo$ ./perl6 2 > say ’hello world’; 3 hello world Introducing Perl 6 Portuguese Perl Workshop 2010
  38. 38. Run Perl 6 code • interactive mode 1 rakudo$ ./perl6 2 > say ’hello world’; 3 hello world • execute scripts 1 rakudo$ cat hello.p6 2 say ’hello world’; 3 rakudo$ ./perl6 hello.p6 4 hello world Introducing Perl 6 Portuguese Perl Workshop 2010
  39. 39. Thanks • Perl 6 • Parrot • Rakudo • Perl 6 Book Introducing Perl 6 Portuguese Perl Workshop 2010
  40. 40. Conlusion • we haven’t seen everything Introducing Perl 6 Portuguese Perl Workshop 2010
  41. 41. Conlusion • we haven’t seen everything • spec is still under development Introducing Perl 6 Portuguese Perl Workshop 2010
  42. 42. Conlusion • we haven’t seen everything • spec is still under development • implementations still under development Introducing Perl 6 Portuguese Perl Workshop 2010
  43. 43. Conlusion • we haven’t seen everything • spec is still under development • implementations still under development • http://www.perl6.org Introducing Perl 6 Portuguese Perl Workshop 2010
  44. 44. Conlusion • we haven’t seen everything • spec is still under development • implementations still under development • http://www.perl6.org • .. available in a Christmas near you Introducing Perl 6 Portuguese Perl Workshop 2010
  45. 45. The End Questions? Introducing Perl 6 Portuguese Perl Workshop 2010

×