On s'attend à plusieurs mises en œuvre de Perl 6. Le compilateur rakudo de Parrot sera la première mise en œuvre substantielle de Perl 6. Pour le bootstrap de Perl 6, Parrot utilise NQP (Not Quite Perl), un sous-ensemble de Perl 6 avec PGE pour l'analyse de sa grammaire. Après cela, Perl 6 sera probablement auto-hébergé — il sera utilisé pour se compiler lui-même. Une grande partie de la mise en œuvre de Perl est exposée, rendant possible, par exemple, l'expansion de l'analyseur de code.
Beaucoup d'autres mises en oeuvre partielles sont en cours avec différents moteurs d'analyse de code source et de générateurs de code.
Comme en Perl 5, les JAPHs (programmes qui impriment "Just another Perl hacker, ") sont de bons moyens d'expérimenter avec Perl 6. Ici un exemple de curryfication :
sub japh (Str $lang) { say "just another $lang hacker"; } my &perl6Japh := &japh.assuming("Perl6"); perl6Japh();
En Perl 6 comme en Perl 5, on peut écrire
print "Hello world\n";
En Perl 6, on préfèrera écrire le hello world ainsi :
say "Hello world";
say
est semblable au say
de REXX, au writeln
de Pascal et au puts
de Ruby et C.
Le processus de conception de Perl 6 a été annoncé pour la première fois le 19 juillet 2000, par Larry Wall le 4° jour de la conférence annuelle OSCON dans son discours sur l'état de l'oignon 2000 ("State of the Onion 2000"). À cette date, les principaux objectifs étaient de débarrasser le langage de verrues historiques ("historical warts"); “les choses faciles doivent rester faciles, les choses difficiles doivent être plus faciles, et les choses impossibles ne devraient pas être difficiles” de nettoyer d'une manière générale la conception interne et les API. Le processus a commencé avec une série de demandes de changements ou « RFC ». Ce processus était ouvert à tous les contributeurs et ne laissait aucun aspect du langage à l’abri du changement.
Une fois le processus des RFC terminé, Wall a revu et classé chaque demande. Il a alors commencé la rédaction des Apocalypses. Bien que le but initial était d’écrire une Apocalypse pour chaque chapitre de « Programmation en Perl », il est devenu évident à la rédaction de chacune des Apocalypses que les précédentes apocalypses devenaient invalides de par les derniers changements. Pour cette raison, un ensemble de synopsis ont été publiés, chacun relatif au contenu d’une Apocalypse, mais mis à jour suivant les modifications apparues. Aujourd’hui, les spécifications de Perl 6 continuent presque entièrement à travers les Synopsis.
Il y a 3 méthodes principales de communication utilisées dans le développement de Perl 6 actuellement. La première est le canal IRC #perl6 sur irc.freenode.net. La seconde est un ensemble de listes de diffusion sur les serveurs de la Fondation Perl du domaine perl.org. La troisième est le référentiel de code source Subversion utilisé par l’équipe du projet Pugs.
Au fil des ans, Perl 6 a connu plusieurs changements de direction. L’introduction de concepts provenant de Python et Ruby ont influé au début, mais lors de l’écriture de l’interpréteur pugs dans le langage Haskell, on a pu noter une large influence de la programmation fonctionnelle sur l’équipe de conception de Perl 6.
Pugs est historiquement la première mise en œuvre expérimentale de Perl 6. Pugs a été écrit en Haskell. Pugs peut exécuter du code Perl 6 directement, ainsi que compiler du Perl 6 vers du JavaScript, du Perl 5 ou du bytecode Parrot.
Pugs a servi à affiner les spécifications de Perl 6. Écrit essentiellement par Audrey Tang, maintenant peu active. Pugs utilise des fonctionnalités avancées de Haskell, ce qui est un obstacle à la reprise du projet par d'autres programmeurs.
Durant 2006, Pugs, une première mise en œuvre écrite en Haskell était suffisamment avancée pour permettre d'écrire des jeux de tests, de valider, de corriger et d'affiner les spécifications.