The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Data::ENAML - Perl extension for ENAML data representation


  use Data::ENAML qw (serialize deserialize);

  print serialize('login' => {'nick' => 'Schop', 
        'email' => '', 
        'tagline' => 'If I had no modem I would not lose Regina'});

  $struct = deserialize('bad-nick: {nick: "c00l dewd" text: "spaces not allowed"}');


ENAML stands for ENAML is Not A Markup Language. (And as we all know, Gnu is Not UNIX, Pine Is Not Email, Wine Is Not Emulator, Lame Ain't Mp3 Encoder and so on).

ENAML was defined by Robey Pointer for use in Say2, check


Robey Pointer has an ENAML module, but I couldn't find it in CPAN. Differences between the modules (besides the different API) include:

  • Data::ENAML will marshall blessed objects.

  • Data::ENAML does not convert UTF-8, and does not automatically assume Latin-1 charset.

  • Data::ENAML represents unassigned properties by undef and not a NULL character.


Support UTF-8. Robey's module assumes automatically Latin character set. Nu, Ivrit Kasha Saffa!


Ariel Brosh,


perl(1), Net::IRC.

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 201:

'=item' outside of any '=over'

Around line 215:

You forgot a '=back' before '=head1'