NAME Data::Object::Cast ABSTRACT Data Type Casting for Perl 5 SYNOPSIS package main; use Data::Object::Cast; local $Data::Object::Cast::To = 'Test::Object'; # Data::Object::Cast::Deduce([1..4]); # Test::Object::Array DESCRIPTION This package provides functions for casting native data types to objects and the reverse. LIBRARIES This package uses type constraints from: Types::Standard FUNCTIONS This package implements the following functions: deduce Deduce(Any $value) : Object The Deduce function returns the argument as a data type object. Deduce example #1 # given: synopsis Data::Object::Cast::Deduce([1..4]) # $array Deduce example #2 # given: synopsis Data::Object::Cast::Deduce(sub { shift }) # $code Deduce example #3 # given: synopsis Data::Object::Cast::Deduce(1.23) # $float Deduce example #4 # given: synopsis Data::Object::Cast::Deduce({1..4}) # $hash Deduce example #5 # given: synopsis Data::Object::Cast::Deduce(123) # $number Deduce example #6 # given: synopsis Data::Object::Cast::Deduce(qr/.*/) # $regexp Deduce example #7 # given: synopsis Data::Object::Cast::Deduce(\'abc') # $scalar Deduce example #8 # given: synopsis Data::Object::Cast::Deduce('abc') # $string Deduce example #9 # given: synopsis Data::Object::Cast::Deduce(undef) # $undef deducedeep DeduceDeep(Any @args) : (Object) The DeduceDeep function returns any arguments as data type objects, including nested data. DeduceDeep example #1 # given: synopsis Data::Object::Cast::DeduceDeep([1..4]) # $array <$number> DeduceDeep example #2 # given: synopsis Data::Object::Cast::DeduceDeep({1..4}) # $hash <$number> detract Detract(Any $value) : Any The Detract function returns the argument as native Perl data type value. Detract example #1 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( [1..4] ) ) # $arrayref Detract example #2 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( sub { shift } ) ) # $coderef Detract example #3 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( 1.23 ) ) # $number Detract example #4 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( {1..4} ) ) # $hashref Detract example #5 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( 123 ) ) # $number Detract example #6 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( qr/.*/ ) ) # $regexp Detract example #7 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( \'abc' ) ) # $scalarref Detract example #8 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( 'abc' ) ) # $string Detract example #9 # given: synopsis Data::Object::Cast::Detract( Data::Object::Cast::Deduce( undef ) ) # $undef detractdeep DetractDeep(Any @args) : (Any) The DetractDeep function returns any arguments as native Perl data type values, including nested data. DetractDeep example #1 # given: synopsis Data::Object::Cast::DetractDeep( Data::Object::Cast::DeduceDeep( [1..4] ) ) DetractDeep example #2 # given: synopsis Data::Object::Cast::DetractDeep( Data::Object::Cast::DeduceDeep( {1..4} ) ) typename TypeName(Any $value) : Maybe[Str] The TypeName function returns the name of the value's data type. TypeName example #1 # given: synopsis Data::Object::Cast::TypeName([1..4]) # 'ARRAY' TypeName example #2 # given: synopsis Data::Object::Cast::TypeName(sub { shift }) # 'CODE' TypeName example #3 # given: synopsis Data::Object::Cast::TypeName(1.23) # 'FLOAT' TypeName example #4 # given: synopsis Data::Object::Cast::TypeName({1..4}) # 'HASH' TypeName example #5 # given: synopsis Data::Object::Cast::TypeName(123) # 'NUMBER' TypeName example #6 # given: synopsis Data::Object::Cast::TypeName(qr/.*/) # 'REGEXP' TypeName example #7 # given: synopsis Data::Object::Cast::TypeName(\'abc') # 'STRING' TypeName example #8 # given: synopsis Data::Object::Cast::TypeName('abc') # 'STRING' TypeName example #9 # given: synopsis Data::Object::Cast::TypeName(undef) # 'UNDEF' AUTHOR Al Newkirk, awncorp@cpan.org LICENSE Copyright (C) 2011-2019, Al Newkirk, et al. This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file" . PROJECT Wiki Project Initiatives Milestones Contributing Issues