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
#!/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
my $binary = sprintf "%032b", unpack('N', inet_aton( $dotted));
 
# 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
$dotted = inet_ntoa(pack( 'B32', $binary));
 
# And output
print "$dotted/$size\n";
}</lang>
}
</lang>
{{Out}}
<pre>$ canonicalize_cidr.pl 87.70.141.1/22
1,480

edits