$B = ( scalar join '', map { $b = $_ + 49; $b = pack('c',$b); # converts ord to chr without using 'chr' $b =~ s/(a|0)/$1-/; # appends a '-' if it's an 'a' or a '0' $b } ( 48, 74, -1, 8 ) );