---
name: "Bot::BasicBot::Pluggable::Store"
section: "3pm"
platform: "linux"
package: "libbot-basicbot-pluggable-perl"
version: "1.30+ds1-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Bot::BasicBot::Pluggable::Store"
---

# Bot::BasicBot::Pluggable::Store(3pm)

base class for the back-end pluggable store

## NAME

Bot::BasicBot::Pluggable::Store - base class for the back-end pluggable store

## VERSION

version 1.30

## SYNOPSIS

```
  my $store = Bot::BasicBot::Pluggable::Store->new( option => "value" );
  my $namespace = "MyModule";
  for ( $store->keys($namespace) ) {
    my $value = $store->get($namespace, $_);
    $store->set( $namespace, $_, "$value and your momma." );
  }
```

Store classes should subclass this and provide some persistent way of storing things.

## METHODS

- **new()**

  Standard `"new"` method, blesses a hash into the right class and puts any key/value pairs passed to it into the blessed hash. If called with an hash argument as its first argument, new\_from\_hashref will be run with the hash as its only argument. See "new\_from\_hashref" for the possible keys and values. You can also pass a string and it will try to call new\_from\_hashref with a hash reference { type =\> `$string` }. Calls `load()` to load any internal variables, then `"init"`, which you can also override in your module.

- new\_from\_hashref( $hashref )

  Intended to be called as class method to dynamically create a store object. It expects a hash reference as its only argument. The only required hash element is a string specified by *type*. This should be either a fully qualified classname or a colonless string that is appended to *Bot::BasicBot::Pluggable::Store*. All other arguments are passed down to the real object constructor.

- **init()**

  Called as part of new class construction, before `load()`.

- **load()**

  Called as part of new class construction, after `init()`.

- **save()**

  Subclass me. But, only if you want to. See ...Store::Storable.pm as an example.

- keys($namespace,\[$regex\])

  Returns a list of all store keys for the passed `$namespace`.

  If you pass `$regex` then it will only pass the keys matching `$regex`

- get($namespace, $variable)

  Returns the stored value of the `$variable` from `$namespace`.

- set($namespace, $variable, $value)

  Sets stored value for `$variable` to `$value` in `$namespace`. Returns store object.

- unset($namespace, $variable)

  Removes the `$variable` from the store. Returns store object.

- **namespaces()**

  Returns a list of all namespaces in the store.

- **dump()**

  Dumps the complete store to a huge Storable scalar. This is mostly so you can convert from one store to another easily, i.e.:

  ```
    my $from = Bot::BasicBot::Pluggable::Store::Storable->new();
    my $to   = Bot::BasicBot::Pluggable::Store::DBI->new( ... );
    $to->restore( $from->dump );
  ```

  `"dump"` is written generally so you don't have to re-implement it in subclasses.

- restore($data)

  Restores the store from a **dump()**.

## AUTHOR

Mario Domgoergen \<mdom@cpan.org\>

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

## SEE ALSO

Bot::BasicBot::Pluggable

Bot::BasicBot::Pluggable::Module
