Chargement...
 
Recherche sur plusieurs lignes

Table des matières

Exposé

La solution constiste à changer la valeur de la variable séparateur de lignes en entrée qui se nomme $/

Ainsi lorsque vous effectuerez une instruction de la forme :

$ligne=<FILE>

Vous le lirez pas nécessairement une ligne mais plusieurs lignes suivant les règles suivantes :

  • Avec $/="" la recherche va s'effectuer sur un paragraphe et non pas sur une ligne, puisque vous positionnez là le séparateur de ligne en mode paragraphe.

  • Avec $/=undef la recherche s'effectue sur tout le fichier, c'est à dire prend toutes les lignes et tous les paragraphes d'un seul coup.

  • Avec $/="\n" qui est la valeur par défaut une seule ligne sera prise à chaque lecture

  • Avec $/=une chaine, c'est la chaine qui sera votre séparateur de lignes


Une fois que vous avez compris cela vous pouvez lire un fichier de la forme

{{Citation=science sans conscience n'est que ruine de l'âme |Auteur=Montaigne}}


Qui est sur deux lignes séparée par deux retour lignes, qui en font un paragraphe indépendant avec le positionnement de la variable $/ à ""

Ainsi sur cette chaine vous pouvez faire un

<FILE> /Citation=(^*)\|Auteur=(^*))/

pout avoir $1 positionné à la valeur de la citation et $2 positonné à la valeur de l'auteur

Remarque : avec la valeur s derrière le symbole de recherce
//s vous indiquez que vous souhaitez pouvoir faire des expressions régulière en utilisant le caractère . comme fin de ligne
Avec la valeur m vous permettez à $ de rester caractère fin de ligne (idem pour début de ligne) et non pas de chaine de caractères.

Moyen mnémotechnique


$/ est le caractère de délimiteur d'entrée et $\celui de sortie.
Comment s'en rappeler ?
Si vous faites une signature de la forme

//// gilles \\\\

Vous donnez une impression de 3D / est de début (entrée) et \ la fin (sortie)
C'est mon moyen mnémotechnique

Langage Perl / Pense bête technique

Changer de langue

Anglais (English, en)Français (fr)

Recherche