The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use Win32::API;

Win32::API::Struct->typedef(
    POINT => qw(
        LONG x;
        LONG y;
        )
);

Win32::API->Import('user32' => 'BOOL GetCursorPos(LPPOINT pt)');

#### using OO semantics
my $pt = Win32::API::Struct->new('POINT');
GetCursorPos($pt) or die "GetCursorPos failed: $^E";
print "Cursor is at: $pt->{x}, $pt->{y}\n";

#### using tie semantics
my %pt;
tie %pt, Win32::API::Struct => 'POINT';
GetCursorPos(\%pt) or die "GetCursorPos failed: $^E";
print "Cursor is at: $pt{x}, $pt{y}\n";