use feature 'say';
use strict;
use warnings;
use FFI::Raw;
my $libuuid = 'libuuid.so.1';
my $uuid_generate = FFI::Raw -> new(
$libuuid, 'uuid_generate',
FFI::Raw::void, FFI::Raw::ptr
);
my $uuid_unparse = FFI::Raw -> new(
$libuuid, 'uuid_unparse', FFI::Raw::void,
FFI::Raw::ptr, FFI::Raw::ptr);
my $uuid = FFI::Raw::memptr(16); # 16 is sizeof(uuid_t)
my $str = FFI::Raw::memptr(37); # 37 is the size of an UUID string
$uuid_generate -> call($uuid);
$uuid_unparse -> call($uuid, $str);
say $str -> tostr;