If you're emphasizing extremely simple
, I'd suggest looking at YAML::Tiny possibly via YAML::Any to allow for more capable backends in future.
I like YAML for serializing program state because I can read the output for debugging. Program users can send me their state files, and occasionally debug for themselves.
YAML::Tiny, like JSON, cannot handle circular data structures, objects, or code references. That may constrain how you write your code. I ended up writing my own serializing code that converts objects to hashes with a 'class' field that YAML::Tiny can handle.