Perl bitweise UND gibt mir funky Ergebnisse

8

Ich schreibe ein kleines Perl-Skript, um zwei IP-Adressen mit perls bitweisem AND-Operator zu vergleichen. aber ich bekomme einige wirklich funky Ergebnisse. Ich bin neu in Perl, vielleicht kann mir jemand ein paar Hinweise geben.

Heres mein kleines Skript:

%Vor%

Weiß jemand, warum oder wie ich "050 24 00 0" bekommen habe, als ich die bitweisen AND auf den $ octets und $ octets2 Mitgliedern gemacht habe? Alles scheint gut zu funktionieren, wenn ich die bitweise UND-Verwendung von Literalen mache. Bitte helfen Sie. Danke!

    
Sam 19.09.2011, 23:20
quelle

5 Antworten

13

Die bitweisen Ops verhalten sich bei Strings und Zahlen anders und split gibt Strings zurück. Konvertieren Sie die Zeichenfolgen mit 0+ oder int in Zahlen. Ссылка :

%Vor%     
Jacob Eggers 19.09.2011 23:26
quelle
6

Ich schlage vor, dass Sie ein CPAN-Modul wie Net :: IP verwenden.

Auch immer setzen Verwenden Sie streng; Verwenden Sie Warnungen; an der Spitze Ihres Programms.

    
Bill Ruppert 19.09.2011 23:32
quelle
6

Wenn Sie kein CPAN-Modul wie Net :: IP oder Net :: Netmask verwenden, verwenden Sie mindestens einige der Ihnen zur Verfügung gestellten Werkzeuge:

%Vor%

oder kürzer, einfach:

%Vor%     
hobbs 20.09.2011 00:47
quelle
5

Hier ist eine süße schnelle Version:

%Vor%

Um stringifizierte V-Strings zu umgehen:

%Vor%     
TLP 20.09.2011 00:33
quelle
4

Sie haben keine Zahlen konvertiert. Sie verknüpfen Zeichen miteinander.

    
Tom Zych 19.09.2011 23:23
quelle

Tags und Links