ferrancy has almost certainly hit the nail on the head. A bit of simple testing with the following program:
use Net::Netmask;
use strict;
use warnings;
my $b = new2 Net::Netmask( '218.0.0.0 - '.shift(@ARGV).'.255.255.255')
or die "Argh: $Net::Netmask::error";
print map "$_\n", $b->base, $b->mask, $b->size, $b->next;
..shows that it can't deal with many of the ranges around there, ("could not fine exact fit for...") but erroneously thinks that it finds one with a range of 216.0.0.0 - 219.255.255.255 when you ask it for your particular case, 218.0.0.0 - 221.255.255.255! Why it does that instead of erroring out, I don't know; my guess is that t'is a bug.
perl -pe '"I lo*`+$^X$\"$]!$/"=~m%(.*)%s;$_=$1;y^`+*^e v^#$&V"+@( NO CARRIER'