Tengo una variable que contiene una dirección IPv4 de orden de red de 4 bytes (esto se creó usando el paquete y la representación entera). Tengo otra variable, también una subred de orden de red de 4 bytes. Intento agregarlos y agregar uno para obtener la primera IP en la subred.¿Cuál es la forma más sencilla de agregar uno a una cadena binaria en Perl?
Para obtener la representación ASCII, puedo hacer inet_ntoa($ip&$netmask)
para obtener la dirección base, pero es un error hacer inet_ntoa((($ip&$netmask)+1)
; Me sale un mensaje como:
Argument "\n\r&\0" isn't numeric in addition (+) at test.pm line 95.
Así que lo que está pasando, lo mejor que puedo decir, es que es Mirando a los 4 bytes, y al ver que los 4 bytes no representan una cadena numérica, y luego negarse a add 1.
Otra forma de decirlo: ¿Qué quiero hacer es agregar 1 al byte menos significativo, que sé que es el 4º byte? Es decir, quiero tomar la cadena \n\r&\0
y terminar con la cadena \n\r&\1
. ¿Cuál es la forma más simple de hacer eso?
¿Hay alguna manera de hacerlo sin tener que desempaquetar y volver a empaquetar la variable?
Creo que puedes tener razón. Solo estaba tratando de ver si había una manera más simple, pero, por desgracia, puede que no exista. –