The Perl Purity Test
Version 1.04, October 16, 1996
Written by Jeff Okamoto (okamoto@corp.hp.com)
With Help from Tom Christiansen (tchrist@convex.com)
Other Suggestions from Christopher Davis (ckd@eff.org)
Webified by Erik Braun (erik@minet.uni-jena.de)
Traduit en français par les Perl Mongueurs de Paris (david@landgren.net).

This is similar to other Purity Tests, of which perhaps the most famous is the Unisex, Omnisexual Purity Test that can be found in soc.singles.

Additions are welcome. Please send them to okamoto@corp.hp.com.

Answer each question with a yes or no. The program will keep track of your answers and at the end, tell you your Perl Purity Percentage, and also a description of what kind of Perl person you are.

Repondez à chaque question par oui ou non. Le programme calculera votre score, indiquera votre pourcentage de pureté ainsi que le genre de personnage de Perl que vous êtes.

There are 181 questions in this version.

Il existe 181 questions dans cette version.

Visualiser les scores
Votre nom:

Utilisation

1. Avez-vous reécrit une commande Unix en perl?

2. Avez-vous reécrit une commande DOS en perl?

3. Avez-vous emulé une fonctionnalité du noyau dans un programme en perl?

4. Avez-vous écrit un compresseur/décompresseur en utilisant pack?

5. Avez-vous écrit des scripts qui génèrent d'autres scripts?

6. Avez-vous utilisé des fonctionnalités non-documentées?

7. Avez-vous compté sur des fonctionnalités non-documentées?

Variables

8. Avez-vous utilisé des mot-clés reservés comme noms de variable?

9. Avez-vous utilisé $x, @x, et %x dans un script?

10. Avez-vous utilisé $x, @x, %x, et *x dans un script?

11. Avez-vous réussi à vous en sortir quand vous utilisiez $x, @x, %x, et *x dans ce script?

12. Avez-vous écrit un script sans caractère alphabétique?

13. Avez-vous écrit un script sans caractère alphanumérique?

14. Avez-vous utilisé des variables de type caractère de contrôle autres que celles qui sont predefinies?

15. Avez-vous créé des variables pendant l'exécution?

Listes

16. Avez-vous utilisé de véritables tableaux multi-dimensionnels?

17. Avez-vous utilisé des listes de listes?

18. Avez-vous utilisé des listes de tableaux associatifs?

Tableaux associatifs (hashes)

19. Avez-vous utilisé des tableaux associatifs de tableaux associatifs?

20. Avez-vous utilisé des tableaux associatifs de listes?

21. Avez-vous utilisé des opérateurs de tableaux associatifs sur la table de symboles principale?

Structures de données plus complexes

22. Avez-vous utilisé plus de deux niveaux de listes et/ou tableaux associatifs?

Fonctions

23. Avez-vous créé des fonctions pendant l'exécution (avec eval)?

24. Avez-vous écrit une fonction qui renvoie différents types ? (par exemple, scalar, liste, etc.)

25. Avez-vous appelé une fonction avec l'opérateur &, sans paramètre, afin que cette fonction puisse hériter de ce qui reste de la pile des paramètres (@_) de celle qui fait l'appel?

26. Avez-vous changé la définition d'une fonction pendant l'exécution?

27. Avez-vous utilisé wantarray?

28. Avez-vous renvoyé un scalar "0 but true"?

Gestion des boucles

29. Avez-vous utilisé do BLOCK à l'intérieur d'un EXPR?

30. Avez-vous utilisé des opérateurs de boucle (c'est à dire last, next, etc.) à l'intérieur d'un handler de signal?

31. Avez-vous créé un label de boucle pendant l'exécution?

Opérateurs

32. Avez-vous utilisé l'opérateur ".."?

33. Avez-vous utilisé cet opérateur avec autre chose que des numéros de lignes, des indices de listes ou des expressions régulières?

34. Avez-vous utilisé syscall?

Recherche et remplace

35. Avez-vous utilisé le switch /e?

36. Avez-vous utilisé le switch /ee?

37. Avez-vous utilisé plus que deux "e" dans ce genre d'exercice?

Descripteurs

38. Avez-vous utilisé une liste de descripteurs de fichiers?

39. Avez-vous utilisé des descripteurs de fichiers indirects?

40. Avez-vous utilisé des descripteurs de fichiers indirects avec deux niveaux d'indirection?

41. Avez-vous utilisé un descripteur de répertoire en tant que descripteur de fichier?

42. Avez-vous utilisé un descripteur de fichier en tant que descripteur de répertoire?

43. Avez-vous utilisé une réference à un filehandle typeglob ? (Chose plutôt intraduisible : si vous ne savez pas ce que cela veut dire, il suffit de dire non -- ndt)

Expressions régulières

44. Avez-vous utilisé les neufs jeux de parenthèses dans une expression régulière?

45. Avez-vous utilisé plus de neufs jeux de parenthèses dans une expression régulière?

46. Avez-vous utilisé des parenthèses imbriquées dans une expression régulière?

47. Avez-vous souhaité avoir l'équivalent du caractère de meta-fermeture "]" de LISP qui clôt toutes les parenthèses ouvertes?

Grep

48. Avez-vous utilisé grep sur des non-listes?

49. Avez-vous imbriqué un grep dans un grep (donc, deux au total)?

50. Avez-vous imbriqué jusqu'à cinq greps dans une expression (statement)?

51. Avez-vous imbriqué plus de cinq greps dans une expression?

Evals

52. Avez-vous écrit des evals qui modifient leur propre contenu?

53. Avez-vous utilisé eval pour voir s'il ne manque pas quelque chose à votre version plouc de Unix ?

54. Avez-vous utilisé eval/die pour émuler setjmp/longjmp?

55. Avez-vous imbriqué un eval dans un eval (donc, deux au total)?

56. Avez-vous imbriqué jusqu'à cinq evals?

57. Avez-vous imbriqué plus de cinq evals?

Références

58. Avez-vous utilisé des références?

59. Avez-vous utilisé des listes de références?

60. Avez-vous utilisé tableaux associatifs de références?

61. Avez-vous utilisé une référence pour créer un literal constant?

62. Avez-vous utilisé une référence pour créer une variable pendant l'exécution?

63. Avez-vous perdu ce sur quoi votre référence pointait et vous vous en fichiez?

Entrées/Sorties

64. Avez-vous utilisé des stream sockets?

65. Avez-vous utilisé des datagram sockets?

66. Avez-vous utilisé RPC?

Déboguage

67. Avez-vous utilisé le drapeau -D?

68. Avez-vous utilisé le drapeau -D1024?

69. Avez-vous pigé ce que toutes ces informations voulaient dire?

70. Avez-vous utilisé le débugger de perl?

71. Avez-vous modifié le débugger de perl?

Packages

72. Avez-vous écrit votre propre package?

73. Avez-vous utilisé des packages pour émuler le struct de C?

74. Avez-vous référencé la table des symboles d'un package via %_nomdupackage?

Ties (to tie == lier -- ndt)

75. Avez-vous lié un tableau associatif à une classe *DBM au lieu d'utiliser dbmopen?

76. Avez-vous écrit un package qui lie un tableau associatif à un scalar?

77. Avez-vous écrit un package qui lie un tableau associatif à une liste?

78. Avez-vous écrit un package qui lie un tableau associatif à un tableau associatif?

Routines externes (Perl 4)

79. Avez-vous été frustré(e) par la documentation décrivant comment linker perl avec des routines externes (en C)?

80. Avez-vous écrit une fonction à lier avec uperl.o afin de l'appeler d'un script perl?

81. Avez-vous remplacé votre version de perl avec une version contenant des routines à vous?

Portée (scoping)

82. Avez-vous abusé la portée dynamique en triturant @ARGV?

83. Avez-vous abusé la portée dynamique en changeant le noms des routines?

h2ph

84. Avez-vous debogué le résultat de h2ph?

85. Avez-vous travaillé sur h2ph?

c2ph

86. Avez-vous debogué le résultat de c2ph?

87. Avez-vous travaillé sur c2ph?

88. Avez-vous porté gcc à votre plateforme dans le seul but d'utiliser c2ph?

Heavy Wizardry (Sorcellerie lourde, quoi)

89. Avez-vous utilisé des fonctions qui font de l'autochargement en Perl 4?

Extensions

90. Avez-vous utilisé une extension livrée avec Perl?

91. Avez-vous utilisé une extension que vous avez téléchargée de CPAN?

92. Avez-vous écrit votre propre extension?

93. Avez-vous traduit un script Perl 4 en une extension?

94. Avez-vous écrit une fonction pour faire de l'autochargement?

95. Avez-vous utilisé l'extension AutoLoader?

The Source of Taintedness

96. Avez-vous utilisé taintperl?

97. Avez-vous essayé de subvertir les contrôles de TAINT?

98. Avez-vous lu le source pour voir ce qui se passe si vous réussissez à subvertir les contrôles de TAINT?

99. Avez-vous modifié le source afin de modifier ce qui se passe si vous réussissez à subvertir les contrôles de TAINT?

100. Avez-vous essayé de lire le source?

101. Avez-vous trouvé le commentaire "/* Heavy wizardry */" autrement que par une recherche explicite maintenant que vous savez que ça existe?

102. Avez-vous utilisé suidperl?

Le Père, le Fils, et le Saint-Esprit

103. Avez-vous envoyé un mail à Larry sollicitant de l'aide?

104. Avez-vous envoyé un mail à Larry identifiant un bug dans perl?

105. Avez-vous envoyé un mail à Larry demandant une fonctionnalité?

106. Avez-vous reçu une réponse de la part de Larry (et non pas de la part de son auto-répondeur)?

107. Avez-vous réçu plus de dix réponses de la part de Larry en 24 heures?

108. Avez-vous entendu Larry jouer du violon?

109. Avez-vous envoyé un mail à Randal sollicitant de l'aide?

110. Avez-vous envoyé un mail à Randal a propos d'un bug dans perl?

111. Avez-vous envoyé un mail à Randal avec un script JAPH?

112. Avez-vous entendu que Randal n'a pas un casier judicaire vierge?

113. Avez-vous lu la page ouèbe qui explique le pourquoi de la chose?

114. Avez-vous donné de l'argent au "Fonds pour la défense judiciaire de Randal"?

115. Avez-vous eu du mal à vous souvenir combien de 'l' il y a dans 'Randal'?

116. Avez-vous envoyé un mail à Tom sollicitant de l'aide?

117. Avez-vous envoyé un mail à Tom a propos d'un bug dans perl?

118. Avez-vous assisté à un tutorial sur perl de Tom pendant une conférence USENIX?

119. Avez-vous assisté à un tutorial sur perl de Tom pendant une conférence USENIX deux fois, ou plus?

120. Avez-vous envoyé un mail à Tom a propos d'une erreur dans ses diapos?

121. Avez-vous eu une fonctionnalité demandée incluse dans un patch ultérieur?

122. Avez-vous eu jusqu'à cinq fonctionnalités demandées incluses dans un patch ultérieur?

123. Avez-vous eu plus de cinq fonctionnalités demandées incluses?

124. Avez-vous rencontré Larry, Randal et Tom?

125. Avez-vous rencontré Larry, Randal, et Tom simultanément ou dans un laps de temps de quelques heures?

Trivia

126. Avez-vous écrit un script du genre "Just another Perl hacker"?

127. Avez-vous écrit jusqu'à cinq JAPH scripts?

128. Avez-vous écrit plus de cinq JAPH scripts?

129. Avez-vous écrit des poèmes en perl?

130. Avez-vous exécuté ces poèmes en perl?

Divers

131. Avez-vous utilisé des chaînes de caractères non-délimitées?

132. Avez-vous utilisé des chaînes de caractères non-délimitées sans faire exprès?

133. Avez-vous appelé seek sur le déscripteur __DATA__ afin de relire votre script?

134. Avez-vous essayé d'utiliser un pipe bi-directionnel?

135. Avez-vous compris pourquoi ceci est une perte de temps?

136. Avez-vous utilisé des co-routines dans un script perl?

137. Avez-vous écrit un script qui utilise des switches sur la ligne de commande?

138. Avez-vous utilisé jusqu'à cinq switches sur la ligne de commande?

139. Avez-vous utilisé plus de cinq switches sur la ligne de commande?

140. Avez-vous rencontré des difficultés avec votre version d'Unix par rapport au nombre de caractères permis après un "# !" ?

141. Avez-vous compté le nombre de fonctions en perl qui sont surchargées?

142. Avez-vous imprimé un script "JAPH" sur votre carte de visite?

POD

143. Avez-vous écrit un script en y imbriquant sa propre page man?

144. Avez-vous eu une fonctionnalité demandée ajoutée à la définition de Pod?

Perl 5 Porters

145. Avez-vous été un abonné à la liste de diffusion des perl5-porters?

146. Avez-vous envoyé un patch à la liste p5p?

147. Avez-vous gardé le patch pumpkin?

148. Avez-vous voulu savoir pourquoi on le nomme ainsi?

149. Avez-vous trouvé qui a inventé le terme "patch pumpkin"?

CPAN

150. Avez-vous consulté le CPAN?

151. Avez-vous possédé votre propre répetoire sur le CPAN?

Perl 3:16

152. Avez-vous consulté le Chameau fuchsia?

153. Avez-vous acheté le Chameau fuchsia?

154. Avez-vous acheté plusieurs exemplaires du Chameau fuchsia parce que vos exemplaires précédents étaient usés?

155. Avez-vous possédé plusieurs éditions différentes du Chameau fuchsia?

156. Avez-vous possédé plusieurs exemplaires de chaque édition du Chameau fuchsia?

157. Avez-vous possédé un exemplaire dédicacé du Chameau fuchsia?

158. Vous êtes-vous déja demandé pouquoi Larry et Randal ont choisi le chameau pour la couverture du Chameau fuchsia?

159. Avez-vous trouvé pourquoi Larry et Randal ont choisi le chameau pour la couverture du Chameau fuchsia?

160. Avez-vous consulté le Chameau bleu?

161. Avez-vous acheté le Chameau bleu?

162. Avez-vous acheté plusieurs exemplaires du Chameau bleu parce que vos exemplaires précédents étaient usés?

163. Avez-vous consulté le Lama?

164. Avez-vous acheté le Lama?

165. Avez-vous acheté plusieurs exemplaires du Lama parce que vos exemplaires précédents étaient usé?

166. Avez-vous possédé plusieurs éditions différentes du Lama?

167. Avez-vous possédé plusieurs exemplaires de chaque édition du Lama?

168. Avez-vous possédé un exemplaire dédicacé du Lama?

169. Vous êtes-vous déja demandé pourquoi Larry et Randal ont choisi le chameau pour la couverture du Lama?

170. Avez-vous trouvé pourquoi Larry et Randal ont choisi le chameau pour la couverture du Lama?

171. Avez-vous écrit un livre sur Perl?

172. Avez-vous possédé un tee-shirt O'Reilly représentant le Chameau?

173. Avez-vous possédé plusieurs tee-shirts O'Reilly représentant le Chameau?

174. Avez-vous possédé un tee-shirt O'Reilly représentant le Lama?

175. Avez-vous possédé plusieurs tee-shirts O'Reilly représentant le Lama?

176. Avez-vous possédé un tee-shirt Perl O'Reilly dédicacé (tous animaux confondus)?

USENET

177. Avez-vous déja lu l'un des groupes de la hiérarchie comp.lang.perl.*?

178. Avez-vous contribué à l'un des groupes de la hiérarchie comp.lang.perl.*?

179. Avez-vous lu le groupe originel comp.lang.perl?

180. Avez-vous contribué au group originel comp.lang.perl?

181. Avez-vous appliqué un killfile au groupe comp.lang.perl ou un autre groupe de la hiérarchie comp.lang.perl.*?