骆驼书建议V字符串可用于表示IPv4地址:
$ipaddr = 204.148.40.9; # the IPv4 address of oreilly.com
Run Code Online (Sandbox Code Playgroud)
但是关于版本字符串主题的perldata指出:
请注意,除非您还使用Socket包的inet_aton()/ inet_ntoa()例程,否则使用IPv4地址的v字符串是不可移植的.
我有两个问题:
1)为什么使用v-strings不便携?
2)将ip-address从点分表示转换为整数的"标准"方法是什么?似乎unpack "N", <v-string>有时可能会导致问题.
获取编码形式的"标准"方法是inet_aton处理虚线IP地址和主机名 - 但您需要它做什么?通常情况下,最好的想法是跳过所有处理此类事情和使用的低级接口,例如IO :: Socket.
如果你想要转换为整数,就像你说的那样,而不是套接字函数所期望的形式(它们在C中是类似的概念,但在Perl中则不那么),那么你可以继续使用pack就好了因为你是一致的 - 不可移植的部分是套接字函数接受的格式.例如,unpack "N", pack "C4", split /\./, "1.2.3.4"将为您提供该地址的一个很好的无符号大端表示形式(以数字16909060 ==的形式0x01020304).
| 归档时间: |
|
| 查看次数: |
574 次 |
| 最近记录: |