Can you try modifying that line to the following and let me know what results you get:
if(defined($rule->allowedHosts)) {
print "allowedHosts defined\n";
$allowedIPs = "all";
} else {
print "allowedHosts not defined\n";
my $ipNetworks = $rule->allowedHosts->ipNetwork;
foreach(@$ipNetworks) {
$allowedIPs .= $_->network . "/" . $_->prefixLength . ", ";
}
}