Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"


by root (Scribe)
on Dec 23, 1999 at 00:49 UTC ( #1131=perlfunc: print w/replies, xml ) Need Help??


See the current Perl documentation for lib:UNIVERSAL.

Here is our local, out-dated (pre-5.6) version:

UNIVERSAL - base class for ALL classes (blessed references)

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

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

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

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 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


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')


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.

Log In?

What's my password?
Create A New User
[Corion]: And a good daypart to you as well, Lady_Aleena !
[robby_dobby]: Hey monkeys, do you ever get the realization that you're all waking up to chaos? I suppose not :P
[Lady_Aleena]: Good morning Corion, I hope you have a wonderful day as well. 8)
[Corion]: Yesterday I encountered an interesting data structure problem. I have a remote program that emits events, and my client listens for these events with one-shot callbacks, that is, I register the callback and if the event gets generated that callback ...
[Lady_Aleena]: robby_dobby, every day. Chaos is my life with few controls.
[Corion]: ... gets called once. The data structure for that is just a hash of arrays, mapping the event type to a queue of registered one-shots, and the first one-shot from the queue gets removed and called.
[Corion]: But now I want to register a one-shot for two events, of which only one will arrive, so my data structure doesn't work anymore...
[Lady_Aleena]: Corion, ouchy.
[Corion]: (maybe I should write this up as a SoPW) - currently, the "most efficient" data structure I come up with is a single array which I scan for the first fitting one-shot. Not efficient but I don't expect more than five outstanding one-shots anyway
[choroba]: can't you create a meta-key corresponding to the disjunction of the events?

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (9)
As of 2017-05-29 07:52 GMT
Find Nodes?
    Voting Booth?