---
name: "Badger::Codec"
section: "3pm"
platform: "linux"
package: "libbadger-perl"
version: "0.16-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Badger::Codec"
---

# Badger::Codec(3pm)

base class for encoding/decoding data

## NAME

Badger::Codec - base class for encoding/decoding data

## SYNOPSIS

```
    # creating a Badger::Codec subclass
    package My::Codec;
    use base 'Badger::Codec';

    sub encode {
        my ($self, $data) = @_;
        # do something
        return $encoded_data;
    }

    sub decode {
        my ($self, $encoded_data) = @_;
        # do something
        return $decoded_data;
    }
    # using the subclass:
    use My::Codec;

    my $codec   = My::Codec->new();
    my $encoded = $codec->encode($some_data);
    my $decoded = $codec->decode($encoded);
```

## INTRODUCTION

This documentation describes the inner working of codec modules. You should only need to consult this documentation if you're writing a codec subclass. For a general introduction to codecs and examples of use, please see Badger::Codecs.

## DESCRIPTION

This module implements a base class codec module for encoding and decoding data to and from different formats. It must be subclassed to provide useful implementations of the `"encode()"` and `"decode()"` methods.

In most, if not all cases, subclasses will simply delegate to subroutines provided by other modules.  For example, the Badger::Codec::Storable module delegates to the `"freeze()"` and `"thaw()"` methods provided by the Storable module.

## METHODS

### encode($data)

Method for encoding data.  This must be redefined in subclassed modules.

### decode($data)

Method for decoding data.  This must be redefined in subclassed modules.

### encoder()

Returns a reference to a subroutine which performs the encoding operation.

### decoder()

Returns a reference to a subroutine which performs the decoding operation.

## AUTHOR

Andy Wardley \<http://wardley.org/\>

## COPYRIGHT

Copyright (C) 2005-2009 Andy Wardley. All rights reserved.

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