#!/usr/bin/perl package KiokuDB::Role::UUIDs; use Moose::Role; use Try::Tiny; use namespace::clean -except => 'meta'; if ( defined &KiokuDB::SERIAL_IDS and KiokuDB::SERIAL_IDS() ) { with qw(KiokuDB::Role::UUIDs::SerialIDs); } else { my $have_libuuid = try { require Data::UUID::LibUUID; 1 }; my $backend = $have_libuuid ? "LibUUID" : "DataUUID"; with "KiokuDB::Role::UUIDs::$backend"; } __PACKAGE__ __END__ =pod =head1 NAME KiokuDB::Role::UUIDs - UUID generation role. =head1 SYNOPSIS with qw(KiokuDB::Role::UUIDs); =head1 DESCRIPTION This role provides UUID assignment. Depending on the C<$SERIAL_IDS> variable being true at compile time, and availability of UUID generation module (L falling back to L) an implementation role is selected. =head1 METHODS =over 4 =item generate_uuid Create a new UUID =back =cut