Beta Shell
v2.0 ยท web2.us.cloudlogin.co
[FM]
[CMD]
[PHP]
[DB]
[INFO]
[SEC]
File Manager
~
/
usr
/
share
/
perl5
/
vendor_perl
/
Test
/
Object
Upload
3 items
Name
Size
Perms
Modified
Actions
[ .. / .. ]
Test.pm
1.13 KB
-rw-r--r--
2017-12-23 21:17:37
Edit
Del
Editing: Test.pm
(1.13 KB)
Path: /usr/share/perl5/vendor_perl/Test/Object/Test.pm
Back
package Test::Object::Test; use strict; use Carp (); use Scalar::Util (); our $VERSION = '0.08'; ##################################################################### # Constructor and Accessors sub new { my $class = shift; my $self = bless { @_ }, $class; # Check params unless ( _CLASS($self->class) ) { Carp::croak("Did not provide a valid test class"); } unless ( _CODELIKE($self->code) ) { Carp::croak("Did not provide a valid CODE or callable object"); } $self; } sub class { $_[0]->{class}; } sub tests { $_[0]->{tests}; } sub code { $_[0]->{code}; } ##################################################################### # Main Methods sub run { $_[0]->code->( $_[1] ); } ##################################################################### # Support Functions # Stolen from Params::Util to avoid adding a dependency needlessly sub _CLASS ($) { (defined $_[0] and ! ref $_[0] and $_[0] =~ m/^[^\W\d]\w*(?:::\w+)*\z/s) ? $_[0] : undef; } sub _CODELIKE { (Scalar::Util::reftype($_[0])||'') eq 'CODE' or Scalar::Util::blessed($_[0]) and overload::Method($_[0],'&{}') ? $_[0] : undef; } 1;