in reply to Perl array delete

delete works on is intended for a hash, not an array.

If you just want to filter out certain elements of an array, use grep or splice:

my $file = "test_html"; my @file_lkp = ("file1", "file2"); @file_lkp = grep {$_ ne $file} @file_lkp;

Replies are listed 'Best First'.
Re^2: Perl array delete
by BrowserUk (Patriarch) on Apr 06, 2011 at 07:11 UTC
    delete works on a hash, not an array.

    Hm. It does 'work' on an array on both 5.8.9 and 5.10.1:

    C:\test>\perl32\bin\perl -Mstrict -we"my @a = 1..10; delete $a[5]; pri +nt qq[@a]" Use of uninitialized value in join or string at -e line 1. 1 2 3 4 5 7 8 9 10 C:\test>\perl64\bin\perl -Mstrict -we"my @a = 1..10; delete $a[5]; pri +nt qq[@a]" Use of uninitialized value in join or string at -e line 1. 1 2 3 4 5 7 8 9 10

    It doesn't really do what you'd hope it would do in as much as it leaves behind an undef in place of the deleted element, but there are no warnings or deprecations.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.