## Makefile.PL : PREREQ_PM if ($^O eq 'MSWin32') { eval 'use UUID 0.02;'; eval 'use Win32::Guidgen 0.02;' if $@; eval 'use Win32API::GUID 0.02;' if $@; %modules = ('UUID' => 0.02) if $@; } else { %modules = ('Data::UUID' => 0.10); }; ## module code sub uuid { my $uuidstring; if (eval{require UUID}) { my $uuid; UUID::generate($uuid); UUID::unparse($uuid, $uuidstring); } elsif (eval{require Data::UUID}) { my $ug = Data::UUID->new; my $uuid = $ug->create; $uuidstring = $ug->to_string($uuid); } elsif (eval{ # for some reason 'no warnings' won't squelch # the 'too late for INIT' warning in Win32::API::Type local $^W = 0; require Win32::Guidgen; }) { $uuidstring = Win32::Guidgen::create(); } elsif (eval{require Win32API::GUID}) { $uuidstring = Win32API::GUID::CreateGuid(); } else { throw Handel::Exception( -text => 'Required modules not found', -details => 'UUID/Data::UUID' ); }; return $uuidstring; };