sub increment_pos { my ($bitstring, $inc) = @_; my @bits = split //, $bitstring; for my $i (0 .. $#bitstring) { $o[$i] += $inc if $bitstring[$i]; } } increment_pos('01110011111100111000011100' => 100); increment_pos('10000100000001000011100000' => 50); increment_pos('11111111100111010111100111' => 10); increment_pos('10001100000011000111100010' => 10); increment_pos('00001100000011000101100010' => 10); increment_pos('00000100000000000001100010' => 10); increment_pos('01110100100000001001110010' => 5); increment_pos('11011101111110111111111110' => 1); increment_pos('11001100010110011111110100' => 1); increment_pos('10000000010100011000100100' => 1); increment_pos('10000000010100010000100100' => 1); print chr for @o;