PSON(PerlScript Object Notation)
JSONに対抗して。(ネタ)
package PSON; use strict; use warnings; our $VERSION = '0.02'; use vars qw( @EXPORT_OK ); use Carp; use Data::Dumper; use Exporter 'import'; @EXPORT_OK = qw(obj2pson pson2obj); use Readonly; Readonly my $VARNAME => 'PSON_VALUE'; sub new { bless {}, shift }; sub obj2pson { my $obj = shift; local $Data::Dumper::Indent = 0; local $Data::Dumper::Varname = $VARNAME; return Dumper( $obj ); } sub pson2obj { my $str = shift; no strict; &_is_dumpeddata( $str ) ? eval ( $str ) : croak "No PSON Data!"; } sub _is_dumpeddata { my $str = shift; return ( $str =~/^\$$VARNAME/) ? 1 : 0; } 1; =head1 NAME PSON - PSON(PerlScript Object Notation) Module =head1 SYNOPSYS use PSON qw(obj2pson pson2obj); my $data = { x=> 'adfs' , y => 'adf' }; my $pson = obj2pson( $data ); my $obj = pson2obj( $pson ); #data == $pson =head1 METHOD =head2 obj2pson( $object ) PerlのオブジェクトをPerlの構文で返します。(Dumperの結果です) =head2 pson2obj( $perl_string ) Perlの構文をPerlのオブジェクトに変換します。(Dumperの逆) =head1 注意 evalしてるだけなんで、危ないよ。 =head1 AUTHOR Masahiro Funakoshi <mfunakoshi@gmail.com> Tomohiro Teranishi <tomohiro.teranishi@gmail.com> =cut