use Win32::OLE; # If Excel is already running it uses the copy in memory eval {$ex = Win32::OLE->GetActiveObject('Excel.Application')}; if ($@) { $ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}) or die; } # open an existing workbook $book = $ex->Workbooks->Open( 'yourdoc.xls' ); #write to a cell $book->Worksheets(1)->Cells(1,1)->Value = "whatever"; #save and exit $book->Save; undef $book; undef $ex;