$t[6] means the 7th item of the array @t. But you declared my @t=(',',$_); which only has 2 items ($t[0] and $t[1]). So when you try $t[6] eq "CA" then perl says it's uninitialized because that item does not exist in that list. The code you posted makes no sense. Try to start from scratch and organize your thoughts, using pen and paper if necessary, before and while writing the code. You're making some progress. Keep trying, and organize your code: my $input = 'SRC185.xlsx'; my $output = 'Output2022.xlsx'; my $workbook = Excel::Writer::XLSX->new( $output ); my $worksheet = $workbook->add_worksheet('List'); my $rowCount = 0; open my $FH, '<', $input or die "Can't open $input: $!";