You should probably be accessing the data directly, and using something like pop or unshift instead of this naive reimplementation. I don't mean to sound harsh, but these are basic list operations, one of the things the Llama Book covers pretty much first thing. Learn them and use them. They are surprisingly efficient.

The idea would be something like this:
sub remove_card { my ($self) = @_; return pop(@{$self->{cards}}); # Returns nth element }
So it would seem you're making a haystack out of a needle, to use a mangled metaphor.

Your problem was that you were sending a list to your cards function, which you then use as an array reference. If you'd put square brackets around what you were passing it, it would've worked, but then, this is probably for the best because it would be really clunky.
$self->cards([$self->cards()->[1..$self->num()-1]]);
You'll note that you're calling the function twice, creating an anonymous array, and you still haven't even returned the correct value.

In reply to Re: Perl OO and dereferincing help by tadman
in thread Perl OO and dereferincing help by dimmesdale

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.