Introducing Perl 6
Nuno Carvalho <smash@cpan.org>


             May 22, 2010




     Introducing Perl 6   Portuguese Per...
Introduction


   • Perl 6 is a specification




                  Introducing Perl 6   Portuguese Perl Workshop 2010
Introduction


   • Perl 6 is a specification
   • Several implementations




                  Introducing Perl 6   Portu...
Introduction


   • Perl 6 is a specification
   • Several implementations
   • Anything that passes the spec test




    ...
Introduction


   • Perl 6 is a specification
   • Several implementations
   • Anything that passes the spec test
   • Per...
Perl6::Variables
   • scalar values

   1   $scalar




                     Introducing Perl 6   Portuguese Perl Workshop...
Perl6::Variables
   • scalar values

   1   $scalar

   • arrays

   1   @array
   2   @array[$i]




                    ...
Perl6::Variables
   • scalar values

   1   $scalar

   • arrays

   1   @array
   2   @array[$i]

   • hash tables

   1 ...
Perl6::Operators

  • the assignment operator (=)

  1   $string = ’Perl’;




                Introducing Perl 6   Portug...
Perl6::Operators

  • the assignment operator (=)

  1   $string = ’Perl’;

  • the dot operator (.)

  1   $object.method...
Perl6::Operators

  • the list operator (,)

  1   @array = 1, 2, 3, 4;

  • the fat-arrow operator (=>)

  1   $pair = ’c...
Perl6::Operators
  • string concatenation (˜)

  1   ’Pe’ ˜ ’rl’;         # Perl




                 Introducing Perl 6  ...
Perl6::Operators
  • string concatenation (˜)

  1   ’Pe’ ˜ ’rl’;         # Perl

  • the max operator (max)

  1   1 max ...
Perl6::Operators
  • string concatenation (˜)

  1   ’Pe’ ˜ ’rl’;         # Perl

  • the max operator (max)

  1   1 max ...
Perl6::Operators
  • the repetition operator (x)

  1   ’a’ x 3;    # ’aaa’




                  Introducing Perl 6   Por...
Perl6::Operators
  • the repetition operator (x)

  1   ’a’ x 3;    # ’aaa’

  • the ternary operator (?? !!)

  1   $n ==...
Perl6::Operators
  • the repetition operator (x)

  1   ’a’ x 3;    # ’aaa’

  • the ternary operator (?? !!)

  1   $n ==...
Perl6::Operators
  • the yadayada operator (...)

  1   sub do_something() { ... }




                 Introducing Perl 6...
Perl6::Operators
  • the yadayada operator (...)

  1   sub do_something() { ... }

  • the ternary operator (?? !!)

  1 ...
Perl6::Operators
  • the yadayada operator (...)

  1   sub do_something() { ... }

  • the ternary operator (?? !!)

  1 ...
Perl6::Subroutines

  • typical subroutine

  1   sub hello() {
  2       say ’hello world’;
  3   }
  4

  5   hello();  ...
Perl6::Subroutines

  • anonymous subroutine

  1   my $hello = sub {
  2       say ’hello world’;
  3   }
  4

  5   $hel...
Perl6::Subroutines

  • passing values

  1   sub hello($name) {
  2       say "hello $name";
  3   }
  4

  5   hello(’p6...
Perl6::Subroutines

  • passing a read-write reference

  1   sub inc($counter is rw) {
  2       $counter++;
  3   }
  4
...
Perl6::Subroutines

  • passing a copy of value

  1   sub inc($counter is copy) {
  2       $counter++;
  3   }
  4

  5 ...
Perl6::Subroutines

  • slurpy arguments

  1   sub inc(*$counter is copy) {
  2       XXX
  3   }
  4

  5   XXX




    ...
Perl6::Subroutines

  • passing a list

  1   sub check(@words) { ... }




                     Introducing Perl 6   Port...
Perl6::Subroutines

  • passing a list

  1   sub check(@words) { ... }

  • passing an hash

  1   sub check(%hash) { ......
Perl6::Multi


1   multi   add(Real $x, Real $y) { ... }
2   multi   add(Int $x, Int $y) { ... }
3   multi   add($x, $y) {...
Perl6::Objects

1   class Point {
2       has $!x;
3       has $!y;
4       has $.color;
5

6       method new($x, $y, $co...
Perl6::Roles



1   XXX




          Introducing Perl 6   Portuguese Perl Workshop 2010
Perl6::Regexes



1   XXX




          Introducing Perl 6   Portuguese Perl Workshop 2010
Perl6::Regexes



1   XXX




          Introducing Perl 6   Portuguese Perl Workshop 2010
Perl6::Grammars



1   XXX




          Introducing Perl 6   Portuguese Perl Workshop 2010
Rakudo


  • one Perl 6 implementation
  • passes 79% of the test spec
  • runs on Parrot VM
  • http://www.rakudo.org



...
Get your feet wet

   • install rakudo

  1   $   git clone ...
  2   $   perl Configure.pl --gen-parrot
  3   $   make
  ...
Run Perl 6 code
  • interactive mode

  1   rakudo$ ./perl6
  2   > say ’hello world’;
  3   hello world




             ...
Run Perl 6 code
  • interactive mode

  1   rakudo$ ./perl6
  2   > say ’hello world’;
  3   hello world

  • execute scri...
Thanks


  • Perl 6
  • Parrot
  • Rakudo
  • Perl 6 Book




                  Introducing Perl 6   Portuguese Perl Works...
Conlusion


  • we haven’t seen everything




                Introducing Perl 6   Portuguese Perl Workshop 2010
Conlusion


  • we haven’t seen everything
  • spec is still under development




                 Introducing Perl 6   P...
Conlusion


  • we haven’t seen everything
  • spec is still under development
  • implementations still under development...
Conlusion


  • we haven’t seen everything
  • spec is still under development
  • implementations still under development...
Conlusion


  • we haven’t seen everything
  • spec is still under development
  • implementations still under development...
The End



          Questions?




          Introducing Perl 6   Portuguese Perl Workshop 2010
Upcoming SlideShare
Loading in …5
×

Introducing perl6

2,633 views
2,500 views

Published on

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

No Downloads
Views
Total views
2,633
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

×