The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/perl

use strict;
use Net::DNS::DurableDNS;
use DNS::ZoneParse;
use Data::Dumper;

# This example looks for A records in all zones with a specific IP and changes them to another IP

my $apiuser = 'xyz';
my $apikey = 'abc';

my $old_ip = '184.106.219.186';
my $new_ip = '198.101.129.155';

# set up a new api connection
my $durable = Net::DNS::DurableDNS->new({apiuser => $apiuser, 
                                         apikey => $apikey});

my $zones = $durable->listZones();

foreach my $zone (@$zones) {
        
    my $records = $durable->listRecords({zonename=>$zone});
    
    foreach my $record (@$records) {
        
        print $record->{id} . '  ' . $record->{name} . '  ' . $record->{type} . '  ' . $record->{data} . "\n";
        
        if ($record->{data} eq $old_ip && $record->{type} eq 'A') {
            warn("Updating " . $record->{name} . "\n");
            my $update = $durable->updateRecord({zonename=>$zone,
                                        name=>$record->{name},
                                        ttl=>'3600',
                                        type=>'A',
                                        data=>$new_ip,
                                        orcreate=>0});
        
        }
        
    
    }    

}


exit;