Introducing perl6

  • 2,133 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
2,133
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
39
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Introducing Perl 6 Nuno Carvalho <smash@cpan.org> May 22, 2010 Introducing Perl 6 Portuguese Perl Workshop 2010
  • 2. Introduction • Perl 6 is a specification Introducing Perl 6 Portuguese Perl Workshop 2010
  • 3. Introduction • Perl 6 is a specification • Several implementations Introducing Perl 6 Portuguese Perl Workshop 2010
  • 4. Introduction • Perl 6 is a specification • Several implementations • Anything that passes the spec test Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. Perl6::Variables • scalar values 1 $scalar Introducing Perl 6 Portuguese Perl Workshop 2010
  • 7. Perl6::Variables • scalar values 1 $scalar • arrays 1 @array 2 @array[$i] Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. Perl6::Operators • the assignment operator (=) 1 $string = ’Perl’; Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. 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. Perl6::Operators • string concatenation (˜) 1 ’Pe’ ˜ ’rl’; # Perl Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. 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. Perl6::Operators • the repetition operator (x) 1 ’a’ x 3; # ’aaa’ Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. 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. Perl6::Operators • the yadayada operator (...) 1 sub do_something() { ... } Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. 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. 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. 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. 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. 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. 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. Perl6::Subroutines • slurpy arguments 1 sub inc(*$counter is copy) { 2 XXX 3 } 4 5 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  • 27. Perl6::Subroutines • passing a list 1 sub check(@words) { ... } Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. 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. 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. Perl6::Roles 1 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  • 32. Perl6::Regexes 1 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  • 33. Perl6::Regexes 1 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  • 34. Perl6::Grammars 1 XXX Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. 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. Run Perl 6 code • interactive mode 1 rakudo$ ./perl6 2 > say ’hello world’; 3 hello world Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. Thanks • Perl 6 • Parrot • Rakudo • Perl 6 Book Introducing Perl 6 Portuguese Perl Workshop 2010
  • 40. Conlusion • we haven’t seen everything Introducing Perl 6 Portuguese Perl Workshop 2010
  • 41. Conlusion • we haven’t seen everything • spec is still under development Introducing Perl 6 Portuguese Perl Workshop 2010
  • 42. Conlusion • we haven’t seen everything • spec is still under development • implementations still under development Introducing Perl 6 Portuguese Perl Workshop 2010
  • 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. 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. The End Questions? Introducing Perl 6 Portuguese Perl Workshop 2010