use warnings; use strict; use Data::Dumper; my $file = '1|0||34|0|123'; print "file is $file\n"; my @m_file = map { ($_) ? $_ : 'default' } (split /\|/,$file); # try w/ defined($_) as well print Dumper(@m_file); #### Output I want 1 0 default 34 0 123