- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
sub serialize {
my ($obj) = @_;
my $result;
my $ref = ref $obj;
if ($ref eq 'HASH') {
$result = sprintf '{ %s }', join(', ', map { qq/"$_": / . serialize($obj->{$_}) } keys %$obj);
} elsif ($obj eq 'ARRAY') {
$result = sprintf '[ %s ]', join(', ', map { serialize($_) } @$obj);
} elsif (! $ref) {
if (!defined $obj) {
$result = 'null';
} elsif ($obj =~ /^ -? (?:0|[1-9]\d*) (?:\.\d+)? (?:[eE][+-]?\d+)? $/x) {
$result = $obj;
} else {
$obj =~ s/(["\\])/\\$1/g;
$obj =~ s/\r/\\r/g;
$obj =~ s/\n/\\n/g;
$obj =~ s/\t/\\t/g;
$result = qq/"$obj"/;
}
}
return $result;
}