programmer.perl:

As davido mentions, deleting from a *large* list may be a bit slow. The algorithm I use (only works when the order isn't important) is to copy the last item in the list on top of the entry to delete, and then truncate the last item from the list:

#!/usr/bin/perl + use strict; use warnings; use Data::Dumper; my @stuff = (qw(Chem Bio Maths C++ Java)); print "BEFORE: ", join(", ", @stuff), "\n"; my $i = int(@stuff * rand); print "Removing item $i\n"; if ($i != $#stuff) { $stuff[$i] = $stuff[-1]; } $#stuff = $#stuff-1; print "AFTER: ", join(", ", @stuff), "\n";

Running this a few times gives me:

$ perl t.pl BEFORE: Chem, Bio, Maths, C++, Java Removing item 4 AFTER: Chem, Bio, Maths, C++ $ perl t.pl BEFORE: Chem, Bio, Maths, C++, Java Removing item 2 AFTER: Chem, Bio, Java, C++ $ perl t.pl BEFORE: Chem, Bio, Maths, C++, Java Removing item 3 AFTER: Chem, Bio, Maths, Java

Update: Forgot some brackets (on davidos name ... almost did it again!)

...roboticus

When your only tool is a hammer, all problems look like your thumb.


In reply to Re: deleting from the memory by roboticus
in thread deleting from the memory by programmer.perl

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.