Perl 6
Perl 6 Delta Tablet: Revision 8

Overview - Chapter: 0:Intr, 1:Hist, 2:Design, 3:Var, 4:Op, 5:IO, 6:{}, 7:Sub, 8:OOP, 9:Rx - Appendices: A:Index, B:Tables, C:Best of, D:Delta, E:Links




Less Unix Centric

Perl 1 was a child of the Unix world, borrowing a lot of folklore and words. As Perl 6 had to regularize the Regex and reform some other parts, this heritage has become less visible.

General Purpose

Perl 5 still has a lot of builtins, showing where the language is coming from. But to become more general purpose, the core was enhanced and some other parts got removed. File IO, Network and IPC, Formats, and finally that long deprecated pre P5 DB-binding (dbmopen) went out of the core or at least into sensible module namespaces. The optional type system enables compiler optimisations to make Perl even usable in cases where you had to switch to C before.

Simple English

In Perl 5 we had my, our, use, require, bless, can, ISA (is a), chop and also of course if, else, goto and all the loops. Perl 6 adds given, when, take, WHERE, HOW, WHO and lot more everyday english which should make it easy to read.

Functional Programming

High order functions, currying, you name it. All that goodies are there, as Perl 6 aims to an full support of functional programming.

Ubiquity

As always, Perl is optimized for richness of expression.

Syntactical Changes

  • use strict and warnings are on by default
  • consistent sigils: so @array[1] replaces $array[1] and %hash{'key'} replaces $hash{'key'} or @hash{'key', 'key2'}
  • arrays, hashes, formats, directories and filehandles are internal objects with procedural Interfaces and can be saved in scalar variables.
  • special variables have their own namespace ($VARNAME and $?VARNAME), also token (__LINE__) will now be found there
  • Methods: . (dot) replaces -> (arrow) : object.method;
  • concatenate strings: ~ (tilde) instead of . (dot): $string = 'Shinmen Musahashi: ' ~ 'Sho Rin No Sho';
  • smartmatch (regex and more): ~~ instead of =~
  • < ... > replaces qw( ... )(exists still): interpolating << ... >>
  • ternary operator: ?? ... !! ... instead of ? ... : ...
  • no more 'foreach'. 'for' now iterates only on arrays
  • c-style loops: loop ( ; ; ) instead of for ( ; ; )
  • after loop flow control: repeat { ... } while ... ; replaces do { ... } while (...);
  • define classes with 'class' and modules with 'module'
  • no more source filters, but macros
  • no more references, bind variables on the symbol table

News

  • new contexts: hashlist, lazy list, bool, int, num, string
  • optional typing, traits (properties of variables), binding
  • loop and say commands
  • zip, err, yadda and pipe operators
  • hyper / reduction operators
  • chained comparison operators
  • case construct with given and when
  • junctions : if $a = 1|2|3
  • currying
  • smartmatch / rules (regex++, own sublanguage within the language like in Rebol)
  • named parameters for subroutines, multimethods, coroutines
  • more explicit OOP:
    • autogenerated getters/setters
    • roles (similar to Ruby's Mixins, or Java's Interfaces)
  • delegation, design by contract (Eiffel)
  • exceptions, continuations
  • macros

Native Perl 6

  • no parentheses required for control expressions after if, unless, while ... (but still allowed)
  • $hash<key> instead of $hash{'key'}, or $hash<<key>> instead of $hash{"key"}

Overview - Chapter: 0:Intr, 1:Hist, 2:Design, 3:Var, 4:Op, 5:IO, 6:{}, 7:Sub, 8:OOP, 9:Rx - Appendices: A:Index, B:Tables, C:Best of, D:Delta, E:Links



Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

 
 
 
File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

 
 
 
Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.

Tag: 

Suggestions: