---
name: "Data::GUID"
section: "3pm"
platform: "linux"
package: "libdata-guid-perl"
version: "0.051-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Data::GUID"
---

# Data::GUID(3pm)

globally unique identifiers

## NAME

Data::GUID - globally unique identifiers

## VERSION

version 0.051

## SYNOPSIS

```
  use Data::GUID;
  my $guid = Data::GUID->new;
  my $string = $guid->as_string; # or "$guid"
  my $other_guid = Data::GUID->from_string($string);
  if (($guid <=> $other_guid) == 0) {
    print "They're the same!\n";
  }
```

## DESCRIPTION

Data::GUID provides a simple interface for generating and using globally unique identifiers.

## PERL VERSION

This library should run on perls released even an extremely long time ago.  It should work on any version of perl released in the last ten years.

Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased.  The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl.

## GETTING A NEW GUID

### new

```
  my $guid = Data::GUID->new;
```

This method returns a new globally unique identifier.

## GUIDS FROM EXISTING VALUES

These method returns a new Data::GUID object for the given GUID value.  In all cases, these methods throw an exception if given invalid input.

### from\_string

```
  my $guid = Data::GUID->from_string("B0470602-A64B-11DA-8632-93EBF1C0E05A");
```

### from\_hex

```
  # note that a hex guid is a guid string without hyphens and with a leading 0x
  my $guid = Data::GUID->from_hex("0xB0470602A64B11DA863293EBF1C0E05A");
```

### from\_base64

```
  my $guid = Data::GUID->from_base64("sEcGAqZLEdqGMpPr8cDgWg==");
```

### from\_data\_uuid

This method returns a new Data::GUID object if given a Data::UUID value. Because Data::UUID values are not blessed and because Data::UUID provides no validation method, this method will only throw an exception if the given data is of the wrong size.

## IDENTIFYING GUIDS

### string\_guid\_regex

### hex\_guid\_regex

### base64\_guid\_regex

These methods return regex objects that match regex strings of the appropriate type.

### from\_any\_string

```
  my $string = get_string_from_ether;
  my $guid = Data::GUID->from_any_string($string);
```

This method returns a Data::GUID object for the given string, trying all known string interpretations.  An exception is thrown if the value is not a valid GUID string.

### best\_guess

```
  my $value = get_value_from_ether;
  my $guid = Data::GUID->best_guess($value);
```

This method returns a Data::GUID object for the given value, trying everything it can.  It works like `"from_any_string"`, but will also accept Data::UUID values.  (In effect, this means that any sixteen byte value is acceptable.)

## GUIDS INTO STRINGS

These methods return various string representations of a GUID.

### as\_string

This method returns a "traditional" GUID/UUID string representation.  This is five hexadecimal strings, delimited by hyphens.  For example:

```
  B0470602-A64B-11DA-8632-93EBF1C0E05A
```

This method is also used to stringify Data::GUID objects.

### as\_hex

This method returns a plain hexadecimal representation of the GUID, with a leading `"0x"`.  For example:

```
  0xB0470602A64B11DA863293EBF1C0E05A
```

### as\_base64

This method returns a base-64 string representation of the GUID.  For example:

```
  sEcGAqZLEdqGMpPr8cDgWg==
```

## OTHER METHODS

### compare\_to\_guid

This method compares a GUID to another GUID and returns -1, 0, or 1, as do other comparison routines.

### as\_binary

This method returns the packed binary representation of the GUID.  At present this method relies on Data::GUID's underlying use of Data::UUID.  It is not guaranteed to continue to work the same way, or at all.  *Caveat invocator*.

## IMPORTING

Data::GUID does not export any subroutines by default, but it provides a few routines which will be imported on request.  These routines may be called as class methods, or may be imported to be called as subroutines.  Calling them by fully qualified name is incorrect.

```
  use Data::GUID qw(guid);
  my $guid = guid;             # OK
  my $guid = Data::GUID->guid; # OK
  my $guid = Data::GUID::guid; # NOT OK
```

### guid

This routine returns a new Data::GUID object.

### guid\_string

This returns the string representation of a new GUID.

### guid\_hex

This returns the hex representation of a new GUID.

### guid\_base64

This returns the base64 representation of a new GUID.

### guid\_from\_anything

This returns the result of calling the `"from_any_string"` method.

## TODO

- •

  add namespace support

- •

  remove dependency on wretched Data::UUID

- •

  make it work on 5.005

## AUTHOR

Ricardo SIGNES \<cpan@semiotic.systems\>

## CONTRIBUTOR

Ricardo Signes \<rjbs@semiotic.systems\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2006 by Ricardo SIGNES.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
