Canonicalize CIDR: Difference between revisions
→{{header|Perl}}: Add comments, remove some extraneous parens.
(→{{header|Perl}}: Add comments, remove some extraneous parens.) |
|||
Line 6:
=={{header|Perl}}==
<lang perl>#!/usr/bin/env perl
use v5.16;
use Socket qw(inet_aton inet_ntoa);
Line 17 ⟶ 16:
for (@ARGV) {
# dotted-decimal / bits in network part
my ($dotted, $size) = split m#/#;
my $binary = sprintf "%032b", unpack('N', inet_aton($dotted));▼
# get IP as binary string
# Replace the host part with all zeroes
substr($binary,$size) = "0" x (32 - $size);
$dotted = inet_ntoa(pack('B32', $binary));▼
# Convert back to dotted-decimal
# And output
print "$dotted/$size\n";
}</lang>▼
▲</lang>
{{Out}}
<pre>$ canonicalize_cidr.pl 87.70.141.1/22
|