Here are some thought about your code.
- Check for the success or failure of open and close operations.
- Use the three argument form of open and lexical filehandles.
- Don't keep opening and closeing your output file every time you find a line you are interested in, do them once outside the while loop. Your code keeps opening the file for writing thereby clobbering what you have written in previous loops.
- Add captures to your regex to preserve what comes before and after $element and avoid the performance implications of $'.
- Reading into $_ can save some typing as certain operations default to using $_ if no argument is given.
Something along these lines (not tested).
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};
I hope this is of use.
Cheers,
JohnGG