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";