---
name: "UNIVERSAL"
section: "3pm"
platform: "linux"
package: "perl-5.004-doc"
version: "5.004.05-6"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/UNIVERSAL/3pm"
---

# UNIVERSAL(3pm)

base class for ALL classes (blessed references)

## NAME

UNIVERSAL - base class for ALL classes (blessed references)

## SYNOPSIS

```
    $io = $fd->isa("IO::Handle");
    $sub = $obj->can('print');
```

```
    $yes = UNIVERSAL::isa($ref, "HASH");
```

## DESCRIPTION

`UNIVERSAL` is the base class which all bless references will inherit from, see the *perlobj* manpage

`UNIVERSAL` provides the following methods\

- isa ( TYPE )

  `isa` returns *true* if `REF` is blessed into package `TYPE` or inherits from package `TYPE`.

  `isa` can be called as either a static or object method call.\

- can ( METHOD )

  `can` checks if the object has a method called `METHOD`. If it does then a reference to the sub is returned. If it does not then *undef* is returned.

  `can` can be called as either a static or object method call.\

- VERSION ( \[ REQUIRE \] )

  `VERSION` will return the value of the variable `$VERSION` in the package the object is blessed into. If `REQUIRE` is given then it will do a comparison and die if the package version is not greater than or equal to `REQUIRE`.

  `VERSION` can be called as either a static or object method call.

The `isa` and `can` methods can also be called as subroutines\

- UNIVERSAL::isa ( VAL, TYPE )

  `isa` returns *true* if the first argument is a reference and either of the following statements is true.\

-

  `VAL` is a blessed reference and is blessed into package `TYPE` or inherits from package `TYPE`\

-

  `VAL` is a reference to a `TYPE` of perl variable (er 'HASH')\

- UNIVERSAL::can ( VAL, METHOD )

  If `VAL` is a blessed reference which has a method called `METHOD`, `can` returns a reference to the subroutine.   If `VAL` is not a blessed reference, or if it does not have a method `METHOD`, *undef* is returned.

These subroutines should *not* be imported via `use UNIVERSAL qw(...)`. If you want simple local access to them you can do

```
  *isa = \&UNIVERSAL::isa;
```

to import isa into your package.
