Perl, 72 byte
#!perl -ap
@a=map{unpack N,pack C4,split/\./,$_}@F;$_=abs($a[1]-$a[0])+1
Sử dụng:
$ echo 10.0.2.0 10.0.3.255 | perl ip-range.pl
512$
Chương trình này đã dài hơn chương trình Perl của primo , nên không quá thú vị.
Perl, 119 byte, cho định dạng địa chỉ IP lỗi thời
#!perl -ap
sub v(){/^0/?oct:$_}@a=map{$m=3;@p=split/\./,$_;$_=pop@p;$s=v;$s+=v<<8*$m--for@p;$s}@F;$_=abs($a[1]-$a[0])+1
Sử dụng:
$ echo 10.0.2.0 10.0.3.255 | perl ip-obsolete.pl
512$
$ echo 10.512 10.1023 | perl ip-obsolete.pl
512$
$ echo 0xa.0x200 012.01777 | perl ip-obsolete.pl
512$
Chương trình này chấp nhận định dạng lỗi thời cho các địa chỉ IP! Điều này bao gồm các địa chỉ có 1, 2 hoặc 3 phần hoặc với các phần thập lục phân hoặc bát phân. Trích dẫn trang hướng dẫn inet_addr (3) ,
Các giá trị được chỉ định bằng cách sử dụng ký hiệu dấu chấm có một trong các hình thức sau:
a.b.c.d
a.b.c
a.b
a
... Khi một địa chỉ ba phần được chỉ định, phần cuối cùng được hiểu là số lượng 16 bit và được đặt ở hai byte ngoài cùng bên phải của địa chỉ mạng. ... Khi địa chỉ hai phần được cung cấp, phần cuối cùng được hiểu là số lượng 24 bit và được đặt ở ba byte ngoài cùng bên phải của địa chỉ mạng. ... Khi chỉ có một phần được đưa ra, giá trị được lưu trữ trực tiếp trong địa chỉ mạng mà không cần sắp xếp lại byte.
Tất cả các số được cung cấp dưới dạng `` phần '' trong ký hiệu dấu chấm có thể là số thập phân, bát phân hoặc thập lục phân, như được chỉ định trong ngôn ngữ C (nghĩa là số 0x hoặc 0X hàng đầu ngụ ý thập lục phân; số 0 đứng đầu có nghĩa là số bát phân; được hiểu là số thập phân).
Hầu hết các chương trình không còn chấp nhận định dạng lỗi thời này, nhưng ping 0177.1
vẫn hoạt động trong OpenBSD 5.5.