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

NAME

Data::Object - Data Type Objects for Perl 5

VERSION

version 0.20

SYNOPSIS

use Data::Object;

my $object = Data::Object->new([1..9]);

$object->isa('Data::Object::Array'); # 1
$object->count; # 9

DESCRIPTION

Data::Object provides functions for promoting Perl 5 native data types to objects which provide common methods for operating on the data.

EXPORTS

data

use Data::Object qw(:data);

data_undef;

The data export tag will export all exportable functions whose names are prefixed with the word "data".

type

use Data::Object qw(:type);

type_undef;

The type export tag will export all exportable functions whose names are prefixed with the word "type".

FUNCTIONS

data_array

# given [2..5];

$object = data_array [2..5];
$object->isa('Data::Object::Array');

The data_array function returns a Data::Object::Array instance which wraps the provided data type and can be used to perform operations on the data. The type_array function is an alias to this function.

data_code

# given sub { 1 };

$object = data_code sub { 1 };
$object->isa('Data::Object::Code');

The data_code function returns a Data::Object::Code instance which wraps the provided data type and can be used to perform operations on the data. The type_code function is an alias to this function.

data_float

# given 5.25;

$object = data_float 5.25;
$object->isa('Data::Object::Float');

The data_float function returns a Data::Object::Float instance which wraps the provided data type and can be used to perform operations on the data. The type_float function is an alias to this function.

data_hash

# given {1..4};

$object = data_hash {1..4};
$object->isa('Data::Object::Hash');

The data_hash function returns a Data::Object::Hash instance which wraps the provided data type and can be used to perform operations on the data. The type_hash function is an alias to this function.

data_integer

# given -100;

$object = data_integer -100;
$object->isa('Data::Object::Integer');

The data_integer function returns a Data::Object::Object instance which wraps the provided data type and can be used to perform operations on the data. The type_integer function is an alias to this function.

data_number

# given 100;

$object = data_number 100;
$object->isa('Data::Object::Number');

The data_number function returns a Data::Object::Number instance which wraps the provided data type and can be used to perform operations on the data. The type_number function is an alias to this function.

data_regexp

# given qr/test/;

$object = data_regexp qr/test/;
$object->isa('Data::Object::Regexp');

The data_regexp function returns a Data::Object::Regexp instance which wraps the provided data type and can be used to perform operations on the data. The type_regexp function is an alias to this function.

data_scalar

# given qr/\w+/;

$object = data_scalar qr/\w+/;
$object->isa('Data::Object::Scalar');

The data_scalar function returns a Data::Object::Scalar instance which wraps the provided data type and can be used to perform operations on the data. The type_scalar function is an alias to this function.

data_string

# given 'abcdefghi';

$object = data_string 'abcdefghi';
$object->isa('Data::Object::String');

The data_string function returns a Data::Object::String instance which wraps the provided data type and can be used to perform operations on the data. The type_string function is an alias to this function.

data_undef

# given undef;

$object = data_undef undef;
$object->isa('Data::Object::Undef');

The data_undef function returns a Data::Object::Undef instance which wraps the provided data type and can be used to perform operations on the data. The type_undef function is an alias to this function.

data_universal

# given 0;

$object = data_universal 0;
$object->isa('Data::Object::Universal');

The data_universal function returns a Data::Object::Universal instance which wraps the provided data type and can be used to perform operations on the data. The type_universal function is an alias to this function.

load

# given 'List::Util';

$package = load 'List::Util'; # List::Util if loaded

The load function attempts to dynamically load a module and either dies or returns the package name of the loaded module.

deduce

# given qr/\w+/;

$object = deduce qr/\w+/;
$object->isa('Data::Object::Scalar');

The deduce function returns a data type object instance based upon the deduced type of data provided.

deduce_deep

# given {1,2,3,{4,5,6,[-1]}}

$deep = deduce_deep {1,2,3,{4,5,6,[-1]}}; # produces ...

# Data::Object::Hash {
#     1 => Data::Object::Number ( 2 ),
#     3 => Data::Object::Hash {
#          4 => Data::Object::Number ( 5 ),
#          6 => Data::Object::Array [ Data::Object::Integer ( -1 ) ],
#     },
# }

The deduce_deep function returns a data type object. If the data provided is complex, this function traverses the data converting all nested data to objects. Note: Blessed objects are not traversed.

deduce_type

# given qr/\w+/;

$type = deduce_type qr/\w+/; # SCALAR

The deduce_type function returns a data type description for the type of data provided, represented as a string in capital letters.

detract

# given bless({1..4}, 'Data::Object::Hash');

$object = detract $object; # {1..4}

The detract function returns a value of native type, based upon the underlying reference of the data type object provided.

detract_deep

# given {1,2,3,{4,5,6,[-1, 99, bless({}), sub { 123 }]}};

my $object = deduce_deep $object;
my $revert = detract_deep $object; # produces ...

# {
#     '1' => 2,
#     '3' => {
#         '4' => 5,
#         '6' => [ -1, 99, bless({}, 'main'), sub { ... } ]
#       }
# }

The detract_deep function returns a value of native type. If the data provided is complex, this function traverses the data converting all nested data type objects into native values using the objects underlying reference. Note: Blessed objects are not traversed.

SEE ALSO

AUTHOR

Al Newkirk anewkirk@ana.io

CONTRIBUTOR

Anthony Brummett abrummet@genome.wustl.edu

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Al Newkirk.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.