SlideShare a Scribd company logo
1 of 45
Download to read offline
Introducing Perl 6
Nuno Carvalho <smash@cpan.org>


             May 22, 2010




     Introducing Perl 6   Portuguese Perl Workshop 2010
Introduction


   • Perl 6 is a specification




                  Introducing Perl 6   Portuguese Perl Workshop 2010
Introduction


   • Perl 6 is a specification
   • Several implementations




                  Introducing Perl 6   Portuguese Perl Workshop 2010
Introduction


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




                  Introducing Perl 6   Portuguese Perl Workshop 2010
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
Perl6::Variables
   • scalar values

   1   $scalar




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

   1   $scalar

   • arrays

   1   @array
   2   @array[$i]




                     Introducing Perl 6   Portuguese Perl Workshop 2010
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
Perl6::Operators

  • the assignment operator (=)

  1   $string = ’Perl’;




                Introducing Perl 6   Portuguese Perl Workshop 2010
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
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
Perl6::Operators
  • string concatenation (˜)

  1   ’Pe’ ˜ ’rl’;         # Perl




                 Introducing Perl 6   Portuguese Perl Workshop 2010
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
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
Perl6::Operators
  • the repetition operator (x)

  1   ’a’ x 3;    # ’aaa’




                  Introducing Perl 6   Portuguese Perl Workshop 2010
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
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
Perl6::Operators
  • the yadayada operator (...)

  1   sub do_something() { ... }




                 Introducing Perl 6   Portuguese Perl Workshop 2010
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
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
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
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
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
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
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
Perl6::Subroutines

  • slurpy arguments

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

  5   XXX




                Introducing Perl 6   Portuguese Perl Workshop 2010
Perl6::Subroutines

  • passing a list

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




                     Introducing Perl 6   Portuguese Perl Workshop 2010
Perl6::Subroutines

  • passing a list

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

  • passing an hash

  1   sub check(%hash) { ... }




                     Introducing Perl 6   Portuguese Perl Workshop 2010
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
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
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




                Introducing Perl 6   Portuguese Perl Workshop 2010
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
Run Perl 6 code
  • interactive mode

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




                Introducing Perl 6   Portuguese Perl Workshop 2010
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
Thanks


  • Perl 6
  • Parrot
  • Rakudo
  • Perl 6 Book




                  Introducing Perl 6   Portuguese Perl Workshop 2010
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   Portuguese Perl Workshop 2010
Conlusion


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




                 Introducing Perl 6   Portuguese Perl Workshop 2010
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
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
The End



          Questions?




          Introducing Perl 6   Portuguese Perl Workshop 2010

More Related Content

What's hot

TDOH x 台科 pwn課程
TDOH x 台科 pwn課程TDOH x 台科 pwn課程
TDOH x 台科 pwn課程Weber Tsai
 
The Ring programming language version 1.5.1 book - Part 9 of 180
The Ring programming language version 1.5.1 book - Part 9 of 180The Ring programming language version 1.5.1 book - Part 9 of 180
The Ring programming language version 1.5.1 book - Part 9 of 180Mahmoud Samir Fayed
 
__proto__-and-prototype
  __proto__-and-prototype  __proto__-and-prototype
__proto__-and-prototypeLee zhiye
 
Jonathan Worthington – Perl 2010 Rit Rakudo
Jonathan Worthington – Perl 2010 Rit RakudoJonathan Worthington – Perl 2010 Rit Rakudo
Jonathan Worthington – Perl 2010 Rit Rakudorit2010
 
How to inspect a RUNNING perl process
How to inspect a RUNNING perl processHow to inspect a RUNNING perl process
How to inspect a RUNNING perl processMasaaki HIROSE
 
TDD by Controlling Dependencies
TDD by Controlling DependenciesTDD by Controlling Dependencies
TDD by Controlling DependenciesJorge Ortiz
 
The bytecode mumbo-jumbo
The bytecode mumbo-jumboThe bytecode mumbo-jumbo
The bytecode mumbo-jumboRaimon Ràfols
 
Debugging concurrency programs in go
Debugging concurrency programs in goDebugging concurrency programs in go
Debugging concurrency programs in goAndrii Soldatenko
 
Interceptors: Into the Core of Pedestal
Interceptors: Into the Core of PedestalInterceptors: Into the Core of Pedestal
Interceptors: Into the Core of PedestalKent Ohashi
 
ROP 輕鬆談
ROP 輕鬆談ROP 輕鬆談
ROP 輕鬆談hackstuff
 
Javascript fundamentals for php developers
Javascript fundamentals for php developersJavascript fundamentals for php developers
Javascript fundamentals for php developersChris Ramakers
 
Trying to learn C# (NDC Oslo 2019)
Trying to learn C# (NDC Oslo 2019)Trying to learn C# (NDC Oslo 2019)
Trying to learn C# (NDC Oslo 2019)Patricia Aas
 

What's hot (12)

TDOH x 台科 pwn課程
TDOH x 台科 pwn課程TDOH x 台科 pwn課程
TDOH x 台科 pwn課程
 
The Ring programming language version 1.5.1 book - Part 9 of 180
The Ring programming language version 1.5.1 book - Part 9 of 180The Ring programming language version 1.5.1 book - Part 9 of 180
The Ring programming language version 1.5.1 book - Part 9 of 180
 
__proto__-and-prototype
  __proto__-and-prototype  __proto__-and-prototype
__proto__-and-prototype
 
Jonathan Worthington – Perl 2010 Rit Rakudo
Jonathan Worthington – Perl 2010 Rit RakudoJonathan Worthington – Perl 2010 Rit Rakudo
Jonathan Worthington – Perl 2010 Rit Rakudo
 
How to inspect a RUNNING perl process
How to inspect a RUNNING perl processHow to inspect a RUNNING perl process
How to inspect a RUNNING perl process
 
TDD by Controlling Dependencies
TDD by Controlling DependenciesTDD by Controlling Dependencies
TDD by Controlling Dependencies
 
The bytecode mumbo-jumbo
The bytecode mumbo-jumboThe bytecode mumbo-jumbo
The bytecode mumbo-jumbo
 
Debugging concurrency programs in go
Debugging concurrency programs in goDebugging concurrency programs in go
Debugging concurrency programs in go
 
Interceptors: Into the Core of Pedestal
Interceptors: Into the Core of PedestalInterceptors: Into the Core of Pedestal
Interceptors: Into the Core of Pedestal
 
ROP 輕鬆談
ROP 輕鬆談ROP 輕鬆談
ROP 輕鬆談
 
Javascript fundamentals for php developers
Javascript fundamentals for php developersJavascript fundamentals for php developers
Javascript fundamentals for php developers
 
Trying to learn C# (NDC Oslo 2019)
Trying to learn C# (NDC Oslo 2019)Trying to learn C# (NDC Oslo 2019)
Trying to learn C# (NDC Oslo 2019)
 

Similar to Introducing perl6

Modern Perl Catch-Up
Modern Perl Catch-UpModern Perl Catch-Up
Modern Perl Catch-UpDave Cross
 
Whatsnew in-perl
Whatsnew in-perlWhatsnew in-perl
Whatsnew in-perldaoswald
 
2010/7/31 LTの虎@LL Tiger
2010/7/31 LTの虎@LL Tiger2010/7/31 LTの虎@LL Tiger
2010/7/31 LTの虎@LL TigerAkihiro Okuno
 
plackdo, plack-like web interface on perl6
plackdo, plack-like web interface on perl6plackdo, plack-like web interface on perl6
plackdo, plack-like web interface on perl6Nobuo Danjou
 
The Ring programming language version 1.5.1 book - Part 10 of 180
The Ring programming language version 1.5.1 book - Part 10 of 180The Ring programming language version 1.5.1 book - Part 10 of 180
The Ring programming language version 1.5.1 book - Part 10 of 180Mahmoud Samir Fayed
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4Wim Godden
 
Introduction to Writing Readable and Maintainable Perl (YAPC::EU 2011 Version)
Introduction to Writing Readable and Maintainable Perl (YAPC::EU 2011 Version)Introduction to Writing Readable and Maintainable Perl (YAPC::EU 2011 Version)
Introduction to Writing Readable and Maintainable Perl (YAPC::EU 2011 Version)Alex Balhatchet
 
Perl 5.10
Perl 5.10Perl 5.10
Perl 5.10acme
 
Flying under the radar
Flying under the radarFlying under the radar
Flying under the radarMark Baker
 
06-classes.ppt (copy).pptx
06-classes.ppt (copy).pptx06-classes.ppt (copy).pptx
06-classes.ppt (copy).pptxThắng It
 
What To Expect From PHP7
What To Expect From PHP7What To Expect From PHP7
What To Expect From PHP7Codemotion
 
Session 02 python basics
Session 02 python basicsSession 02 python basics
Session 02 python basicsbodaceacat
 
Session 02 python basics
Session 02 python basicsSession 02 python basics
Session 02 python basicsSara-Jayne Terp
 
Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"Nuno Carvalho
 

Similar to Introducing perl6 (20)

Modern Perl Catch-Up
Modern Perl Catch-UpModern Perl Catch-Up
Modern Perl Catch-Up
 
Perl 101
Perl 101Perl 101
Perl 101
 
Whatsnew in-perl
Whatsnew in-perlWhatsnew in-perl
Whatsnew in-perl
 
Php 7 evolution
Php 7 evolutionPhp 7 evolution
Php 7 evolution
 
50 shades of PHP
50 shades of PHP50 shades of PHP
50 shades of PHP
 
2010/7/31 LTの虎@LL Tiger
2010/7/31 LTの虎@LL Tiger2010/7/31 LTの虎@LL Tiger
2010/7/31 LTの虎@LL Tiger
 
plackdo, plack-like web interface on perl6
plackdo, plack-like web interface on perl6plackdo, plack-like web interface on perl6
plackdo, plack-like web interface on perl6
 
Starting Out With PHP
Starting Out With PHPStarting Out With PHP
Starting Out With PHP
 
The Ring programming language version 1.5.1 book - Part 10 of 180
The Ring programming language version 1.5.1 book - Part 10 of 180The Ring programming language version 1.5.1 book - Part 10 of 180
The Ring programming language version 1.5.1 book - Part 10 of 180
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4
 
PHP7: Hello World!
PHP7: Hello World!PHP7: Hello World!
PHP7: Hello World!
 
Perl Moderno
Perl ModernoPerl Moderno
Perl Moderno
 
Introduction to Writing Readable and Maintainable Perl (YAPC::EU 2011 Version)
Introduction to Writing Readable and Maintainable Perl (YAPC::EU 2011 Version)Introduction to Writing Readable and Maintainable Perl (YAPC::EU 2011 Version)
Introduction to Writing Readable and Maintainable Perl (YAPC::EU 2011 Version)
 
Perl 5.10
Perl 5.10Perl 5.10
Perl 5.10
 
Flying under the radar
Flying under the radarFlying under the radar
Flying under the radar
 
06-classes.ppt (copy).pptx
06-classes.ppt (copy).pptx06-classes.ppt (copy).pptx
06-classes.ppt (copy).pptx
 
What To Expect From PHP7
What To Expect From PHP7What To Expect From PHP7
What To Expect From PHP7
 
Session 02 python basics
Session 02 python basicsSession 02 python basics
Session 02 python basics
 
Session 02 python basics
Session 02 python basicsSession 02 python basics
Session 02 python basics
 
Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 

Introducing perl6

  • 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