このコードは、私が持っているテキスト ファイルからキーワード「fun」を取得し、キーワードの前後の 20 文字を出力します。ただし、前の2行と次の2行も印刷したいのですが、その方法がわかりません。これでコードを変更する方が簡単なのか、ファイル全体を一度に読み取るだけなのか、私にはわかりませんでした。
{my $inputfile = "file";
$searchword = 'fun';
open (INPUT, '<', $inputfile) or die "fatal error reading the file \n";
while ($line1=<INPUT>)
{
#read in a line of the file
if ($line1 =~m/$searchword/i)
{print "searchword found\n";
$keepline = $line1;
$goodline =1;
$keepline =~/(.{1,20})(fun)(.{1,20})/gi;
if ($goodline==1)
{&write_excel};
$goodline =0;
}