my @xored = map { ord } split //, $str1 ^ $str2; my @anded = map { ord } split //, $str1 & $str2; #### use Bit::Vector; sub gen_xor { my $len = length $_[0]; my $vec1 = Bit::Vector->new_Bin($len, $_[0]); my $vec2 = Bit::Vector->new_Bin($len, $_[1]); $vec2->Xor($vec1, $vec2); $vec2->to_Bin(); } sub gen_and { my $len = length $_[0]; my $vec1 = Bit::Vector->new_Bin($len, $_[0]); my $vec2 = Bit::Vector->new_Bin($len, $_[1]); $vec2->And($vec1, $vec2); $vec2->to_Bin(); } print gen_xor('10011', '01110'), "\n"; print gen_and('10011', '01110'), "\n";