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

use Sys::Virt;


my $uri = shift @ARGV;

my $c = Sys::Virt->new(uri => $uri);


my $d = $c->get_domain_by_name("vm1");

unless ($d->is_active()) {
    $d->create;
}



my $mask = $d->get_emulator_pin_info;

@bits = split(//, unpack("b*", $mask));
print join(":", @bits), "\n";

if ($bits[0] == '1' && $bits[1] == '1') {
    @bits[0] = 0;
    my $newmask = '';
    for(my $i = 0 ; $i <= $#bits ; $i++) {
	vec($newmask, $i, 1) = $bits[$i];
    }
    @bits = split(//, unpack("b*", $newmask));
    print join(":", @bits), "\n";
    $d->pin_emulator($newmask);

    $newermask = $d->get_emulator_pin_info;
    @bits = split(//, unpack("b*", $newermask));
    print join(":", @bits), "\n";

    $d->pin_emulator($mask);

    $newermask = $d->get_emulator_pin_info;
    @bits = split(//, unpack("b*", $newermask));
    print join(":", @bits), "\n";

}