---
name: "Cookie::Baker"
section: "3pm"
platform: "linux"
package: "libcookie-baker-perl"
version: "0.12-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Cookie::Baker"
---

# Cookie::Baker(3pm)

Cookie string generator / parser

## NAME

Cookie::Baker - Cookie string generator / parser

## SYNOPSIS

```
    use Cookie::Baker;
    $headers->push_header('Set-Cookie', bake_cookie($key,$val));
    my $cookies_hashref = crush_cookie($headers->header('Cookie'));
```

## DESCRIPTION

Cookie::Baker provides simple cookie string generator and parser.

## XS IMPLEMENTATION

This module tries to use Cookie::Baker::XS's crush\_cookie by default. If this fails, it will use Cookie::Baker's pure Perl crush\_cookie.

There is no XS implementation of bake\_cookie yet.

## FUNCTION

- bake\_cookie

  ```
    my $cookie = bake_cookie('foo','val');
    my $cookie = bake_cookie('foo', {
        value => 'val',
        path => "test",
        domain => '.example.com',
        expires => '+24h'
    } );
  ```

  Generates a cookie string for an HTTP response header. The first argument is the cookie's name and the second argument is a plain string or hash reference that can contain keys such as `"value"`, `"domain"`, `"expires"`, `"path"`, `"httponly"`, `"secure"`, `"max-age"`, `"samesite"`.

  - value

    Cookie's value.

  - domain

    Cookie's domain.

  - partitioned

    If true, sets Partitioned flag, and also enforces secure, SameSite=None. false by default. Cookies Having Independent Partitioned State specification \<https://www.ietf.org/archive/id/draft-cutler-httpbis-partitioned-cookies-00.html\>

  - expires

    Cookie's expires date time. Several formats are supported:

    ```
      expires => time + 24 * 60 * 60 # epoch time
      expires => 'Wed, 03-Nov-2010 20:54:16 GMT'
      expires => '+30s' # 30 seconds from now
      expires => '+10m' # ten minutes from now
      expires => '+1h'  # one hour from now
      expires => '-1d'  # yesterday (i.e. "ASAP!")
      expires => '+3M'  # in three months
      expires => '+10y' # in ten years time (60*60*24*365*10 seconds)
      expires => 'now'  #immediately
    ```

  - max-age

    If defined, sets the max-age for the cookie.

  - path

    Cookie's path.

  - httponly

    If true, sets HttpOnly flag. false by default.

  - secure

    If true, sets secure flag. false by default.

  - samesite

    If defined as 'lax' or 'strict' or 'none' (case-insensitive), sets the SameSite restriction for the cookie as described in the draft proposal \<https://tools.ietf.org/html/draft-west-first-party-cookies-07\>, which is already implemented in Chrome (v51), Safari (v12), Edge (v16),  Opera (v38) and Firefox (v60).

- crush\_cookie

  Parses cookie string and returns a hashref.

  ```
      my $cookies_hashref = crush_cookie($headers->header('Cookie'));
      my $cookie_value = $cookies_hashref->{cookie_name}
  ```

## SEE ALSO

CPAN already has many cookie related modules. But there is no simple cookie string generator and parser module.

CGI, CGI::Simple, Plack, Dancer::Cookie

## LICENSE

Copyright (C) Masahiro Nagano.

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

## AUTHOR

Masahiro Nagano \<kazeburo@gmail.com\>
