in reply to Blessed be the OOP'ers

you are initializing @employees as an array containing a single element, which is an anonymous array. the initialization should read: my @employees = (); this will initialize it as an array with no elements.

Replies are listed 'Best First'.
RE: Re: Blessed be the OOP'ers
by chromatic (Archbishop) on Jun 29, 2000 at 02:26 UTC
    More specifically, the original code could be written this way: my $employees = []; Hopefully that makes it clear that a list enclosed in square brackets is an anonymous list. Assigning that somewhere creates a reference. (That's why you can stuff it in a scalar.)

    The original code creates @employees and sets the first (and only) element to a reference to that anonymous list.

      And the push would then be
      push @$employees, $person;
      
      with printing them looking like
      foreach $p (@$employees) {
         print $p->name(),"\n";
      }
      
      Using the array reference would make it easy to stuff this list of employees into another object/list/whatever.