my @col = split /;/; push @col, '' for @col .. 2; print join ';', @col; #### my $len = 3; print join ';', (split(/;/), ('') x $len)[0 .. $len-1]; #### my %foo = map { (split /:/, $_, 2)[0, 1] } # Implicit "default" undef. qw/ foo:bar baz zip:zap:zoom / ; use Data::Dumper; print Dumper(\%foo); __END__ $VAR1 = { 'baz' => undef, 'foo' => 'bar', 'zip' => 'zap:zoom' }; #### my %foo = map { split /:/ } ...;