Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hai all, I have a local array and I wish to delete the last element of the array from the subroutine. I pass the array as reference and tried as pop(@array_neme); this didn't work. Is there a way I can do it? Thanks & Regards, Naren.
  • Comment on how can an element in a array be deleted from a subroutine ?

Replies are listed 'Best First'.
Re: how can an element in a array be deleted from a subroutine ?
by ChOas (Curate) on Jul 30, 2001 at 11:55 UTC
    Hi!,

    It could be that you make a copy of the array that you are
    referencing to, and delete the last element of that one...

    Try this:
    sub DeleteLast($) { pop @{$_[0]}; };
    This pops the last element of the array you are referencing to...

    Testcase:
    my @Tmp=(1..10); print "@Tmp\n"; sub DeleteLast($) { pop @{$_[0]}; }; DeleteLast(\@Tmp); print "@Tmp\n";
    Output:
    martijn@xxx-test$ ./tst
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9

    GreetZ!,
      ChOas
    p.s. Prototype declaration is not needed, I`m originally a C/C++ programmer,
    and it`s just something I do... (it`s the only C-ish thing I still do in Perl nowadays ;))

    print "profeth still\n" if /bird|devil/;