use strict; use Excel::Writer::XLSX; &func(@ARGV); { my $closure_workbook; sub func { my $book; if (@_) { $book = $closure_workbook = Excel::Writer::XLSX->new( 'perl_bug.xlsx' ); } else { my $workbook = Excel::Writer::XLSX->new( 'perl_good.xlsx' ); $book = $workbook; } my $worksheet = $book->add_worksheet(); $worksheet->write(0, 0, 'Hi Excel!'); } }