The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Tie::YAML - Stores your object when untied via YAML

SYNOPSIS

  use Tie::YAML;
  {
      tie my $scalar => 'Tie::YAML', 'scalar.po';
      $scalar = 42;
  } # scalar is automatically saved as 'scalar.po'.
  {
      tie my @array => 'Tie::YAML', 'array.po';
      @array = qw(Sun Mon Tue Wed Fri Sat);
  } # array is automatically saved as 'array.po'.
  {
      tie my %hash => 'Tie::YAML', 'hash.po';
      %hash = (Sun=>0, Mon=>1, Tue=>2, Wed=>3, Thu=>4, Fri=>5, Sat=>6);
  } # hash is automatically saved as 'hash.po'.
  {
      tie my $object => 'Tie::YAML', 'object.po';
      $object = bless { First => 'Dan', Last => 'Kogai' }, 'DANKOGAI';
  } # You can save an object; just pass a scalar
  {
      tie my $object => 'Tie::YAML', 'object.po';
      $object->{WIFE} =  { First => 'Naomi', Last => 'Kogai' };
      # you can save before you untie like this
      tied($object)->save;
  }

DESCRIPTION

Tie::YAML stores tied variables when untied. Usually that happens when you variable is out of scope. You can of course explicitly untie the variable or tied($variable)->save but the whole idea is not to forget to save it.

This module uses YAML as its backend so it can store and retrieve anything that YAML can.

DEPENDENCIES

This module requires YAML.

SEE ALSO

Tie::SaveLater, Tie::DataDumper, Tie::Storable

perltie, Tie::Scalar, Tie::Array, Tie::Hash

BUGS

As of YAML 0.58, YAML cannot serialize a blessed scalar reference to blessed scalar reference. For that reason, I had to implement a funcition that looks like this.

  sub damn_scalar { # iff necessary
    return $_[0] unless ref($_[0]) =~ /::SCALAR$/;
    return \do{ my $scalar = ${ $_[0] }}
  }

Sigh.

AUTHOR

Dan Kogai, <dankogai@dan.co.jp>

COPYRIGHT AND LICENSE

Copyright (C) 2006 by Dan Kogai

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.