2017-08-18 3 views
-1

j'ouvrir un fichier en utilisant:Perl lecture du paragraphe à l'intérieur de fichier ouvert

open (FH, "<".$File::Find::name) or die "cannot open file \"".$File::Find::name." \"!"; 
while (<FH>) { 
    ...my code... 
} 

Je parse les lignes utilisant des expressions régulières pour obtenir les données que je veux. Maintenant, je veux lire une sous-section d'un fichier jusqu'à ce que je vois la fin de cette sous-section dans ma boucle while. i.e.: la lecture de la ligne « StartSection » jusqu'à ce que « EndSection » par ligne:

open (FH, "<".$File::Find::name) or die "cannot open file 
\"".$File::Find::name." \"!"; 
while (<FH>) { 
    ...my code... 
    if (/^StartSection$/) { 
    while (<FH> !~ /^EndSection) { 
     ... more code.... 
    } 
    } 
} 

Comment dois-je programmer correctement en Perl?

+0

Les mots sont « Perl » et « descripteur de fichier », pas « PERL » et « FileHandler ". – ikegami

+0

Mieux vaut utiliser 'open my $ fh, '<', $ filename ...' – zdim

Répondre

2

Je peux penser à plusieurs façons de répondre à cette question, mais je vais aller avec la flip-flop operator réponse:

while (<FH>) { 
    if (/^StartSection$/ .. /^EndSection/) { 
     ... special code ... 
    } else { 
     ... regular code ... 
    } 
} 
+0

Comment le code lira-t-il la ligne suivante (S) de dans la section if? –

+0

Bonjour merci. Cela fonctionne bien! –