Я пишу небольшой Perl-скрипт для сравнения двух IP-адресов с помощью побитового оператора И perls.но я получаю некоторые действительно интересные результаты.Я новичок в Perl, так что, возможно, кто-то может дать мне несколько советов.
Вот мой маленький сценарий:
#!/usr/bin/perl
$address = "172.34.12.0";
$address2 = "255.255.255.0";
@octets = split (/\./,$address);
@octets2 = split (/\./,$address2);
#Funky results when doing a bitwise AND
#This outputs "050 24 00 0" What's going on here?
print $octets[0] & $octets2[0], "\n";
print $octets[1] & $octets2[1], "\n";
print $octets[2] & $octets2[2], "\n";
print $octets[3] & $octets2[3], "\n";
#Results are what I want when doing it as literals
#This outputs "172 34 12 0"
print 172 & 255, "\n";
print 34 & 255, "\n";
print 12 & 255, "\n";
print 0 & 0, "\n";
Кто-нибудь знает, почему или как я получил "050 24 00 0", когдаделать побитовое И для членов $ octets и $ octets2?Кажется, что все работает нормально, когда я делаю побитовый И с использованием литераловПожалуйста помоги.Спасибо!