in reply to parsing parameters in a new() object call

Hm, I couldn't get your example to work. The line
if (exists &$token)
fails on my system with a exists operator argument is not a HASH element at Yar.pm line 15..

According to the perldocs, exists only takes a hash key as an argument.

I'm not sure how you can go about testing for the existance of a subroutine short of something like

eval "function()"; die "That function doesn't exist!" if $@;
Which does work.

Replies are listed 'Best First'.
Re: Re: parsing parameters in a new() object call
by YaRness (Initiate) on Jan 25, 2001 at 18:10 UTC
    (fixed some ugly formatting)

    From perl -V on my system: "This is perl, v5.6.0 built for MSWin32-x86-multi-thread".

    And from my man pages:

    exists EXPR
    
        ...  (EDIT: stuff about hash, then)
    
    Given an expression that specifies the name of a subroutine, 
    returns true if the specified subroutine has ever been declared,
    even if it is undefined.  Mentioning a subroutine name for 
    exists or defined does not count as declaring it.
    
             print "Exists\n"    if exists &subroutine;
             print "Defined\n"   if defined &subroutine;
    
    
    Maybe you have a different version of perl? Or maybe this is explicitly a win32 thing? I don't know myself. But I do know the code works on my machine :)

    AHA! it's an activestate thing at least: http://velocity.activestate.com/docs/ActivePerl/lib/Pod/perlfunc.html#item_exists