" = ~ /livre (gardien (s |) |) /) {print "assortie \\ n"; } Else {print "ne correspond pas \\ n"; } Print "\\ 1 $ est:", $ 1, "\\ n"; print "\\ $ 2 est:", $ 2, "\\ n"; print "\\ $ 3 est:", $ 3, "\\ n"; L'est sortie du code ci-dessus: 1 $ est: gardiens $ 2 est: s 3 $ est: Le motif serait correspondre "comptables", le "comptable" ou "livre". Cependant, nous avons deux groupes; une dans l'autre. Ce sont ces deux groupes qui peuvent être rappelés. Voilà pourquoi pour la sortie, 3 $ n'a rien à afficher, comme rien ne lui a été assigné.
Le groupe externe dans le motif est cat (s |) et le groupe interne est (s |). Le groupe externe correspond à "chats" en "housecats". Le groupe interne correspond à "s" à la fin de housecats "". Permettez-moi de faire un peu plus d'explications sur ces capture. "(gardien (s |) |)" signifie "gardien (s |)" ou rien, et «gardien (s |)» signifie «gardiens» ou «gardien»; Ainsi, "gardiens" à côté de "livre" est capturé. "(s |)" est un groupe et un groupe quelconque peut être capturée; cela signifie «s» ou rien.
Notez qu'il est pas nécessairement le groupe qui est adapté; il est le motif qui est compensée. La chaîne de sous-mesure correspondance qui a notre "s" est teneurs de livres. Comme "comptables" est égalé, notre "s" est capturé. Capture et l'appariement ne sont pas les mêmes choses. Après appariement se produit, si il n'y a aucun groupe dans la chaîne de sous correspond dans la chaîne disponible, le groupe est capturé (affectée à une variable).
Capturer dans un contexte de liste Dans un contexte de liste, un match, /regex /, avec des groupements sera de retour la liste des valeurs de groupe apparié ($ 1, $ 2, ...). Je illustrer cela en vous montrant comment faire correspondre le temps; ceci est un exemple important. Le produit suivant un match. ($ mes heures, mes $ minutes, $ secondes mes) = ($ thetime = ~ /(\\ d \\ d): (\\ d \\ d): (\\ d \\ d) /); Cette déclaration est pas dans le cas condition.
Le code suivant illustre cela: use strict; my $ temps = "10:20:15"; ($ mes heures, mes $ minutes, $ secondes mes) = ($ thetime =