note
johngg
Here are some thought about your code.<p>
<ul>
<li>Check for the success or failure of [doc://open] and [doc://close] operations.<p>
<li>Use the three argument form of <c>open</c> and lexical filehandles.<p>
<li>Don't keep <c>open</c>ing and <c>close</c>ing your output file every time you find a line you are interested in, do them once outside the <c>while</c> loop. Your code keeps opening the file for writing thereby clobbering what you have written in previous loops.<p>
<li>Add captures to your regex to preserve what comes before and after <c>$element</c> and avoid the performance implications of <c>$'</c>.<p>
<li>Reading into <c>$_</c> can save some typing as certain operations default to using <c>$_</c> if no argument is given.<p>
</ul>Something along these lines (not tested).<p>
<code>
use strict;
use warnings;
my $element = q{coucou};
my $inFile = q{EXEMPLE.txt};
my $outFile = qq{RESEARCHED_text_${element}.txt};
open my $inFH, q{<}, $inFile
or die qq{open: $inFile: $!\n};
open my $outFH, q{>}, $ourFile
or die qq{open: $outFile: $!\n};
while ( <$inFH> )
{
next unless m{(.*?)$element(.*);
print $outFH;
my $beforeElement = $1;
my $afterElement = $2;
# Do something here with your captured text ...
}
close $inFH
or die qq{close: $inFile: $!\n};
close $outFH
or die qq{close: $outFile: $!\n};
</code><p>I hope this is of use.<p>Cheers,<p>JohnGG
670565
670565