foreach my $sub_user_error (@db_user_errors) { $worksheet->write( $row, $col, $db_error_data{$hour}{'Submission_user_error'}{$sub_user_error} or 0, $number); $col++; } #### #! perl use strict; use warnings; use feature qw( say ); my $hour = 12; my $error = 'Submission_user_error'; my $sub_user_error = 3; my $number = 42; my %db_error_data; $db_error_data{$hour}{$error}{$sub_user_error} = 0; say 'With ||:'; say $db_error_data{$hour}{$error}{$sub_user_error} || 0, $number; say 'With or:'; say $db_error_data{$hour}{$error}{$sub_user_error} or 0, $number; #### 22:40 >perl 1619_SoPW.pl Useless use of private variable in void context at 1619_SoPW.pl line 17. With ||: 042 With or: 0 22:40 >