sub remove_card { # usage: $caller->remove_card() # removes top card of pile, returning its value my $self = shift; if($self->num() > 1) { # I've worked with many alterations of this, and this # seems (I repeat *seems*) to be what I want $self->cards( $self->cards()->[1..$self->num()-1] ); } else { $self->cards([]) } }