---
name: "KiokuDB::Util"
section: "3pm"
platform: "linux"
package: "libkiokudb-perl"
version: "0.57-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/KiokuDB::Util"
---

# KiokuDB::Util(3pm)

Utility functions for working with KiokuDB

## NAME

KiokuDB::Util - Utility functions for working with KiokuDB

## VERSION

version 0.57

## SYNOPSIS

```
    use KiokuDB::Util qw(set weak_set);
    my $set = set(@objects); # create a transient set
    my $weak = weak_set(@objects); # to avoid circular refs
```

## DESCRIPTION

This module provides various helper functions for working with KiokuDB.

## EXPORTS

- dsn\_to\_backend $dsn, %args

  Tries to parse `$dsn`, load the backend and invoke `"new"` on it.

  Used by "connect" in KiokuDB and the various command line interfaces.

- set

  - weak\_set

  Instantiate a Set::Object or Set::Object::Weak from the arguments, and then creates a KiokuDB::Set::Transient with the result.

- import\_yaml $kiokudb, @files\_or\_dirs

  Loads YAML files with MooseX::YAML (if given a directory it will be searched recursively for files with a `".yml"` extension are) into the specified KiokuDB directory in a single transaction.

  The YAML files can contain multiple documents, with each document treated as an object. If the YAML file contains a single non blessed array or hash then that structure will be dereferenced as part of the arguments to `"insert"`.

  Here is an example of an array of objects, and a custom tag alias to ease authoring of the YAML file:

  ```
      %YAML 1.1
      %TAG ! !MyFoo::
      ---
      - !User
        id:        foo
        real_name: Foo Bar
        email:     foo@myfoo.com
        password:  '{cleartext}test123'
  ```

  You can use a hash to specify custom IDs:

  ```
      %YAML 1.1
      ---
      the_id: !Some::Class
          attr: moose
  ```

## AUTHOR

Yuval Kogman \<nothingmuch@woobling.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Yuval Kogman, Infinity Interactive.

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