BrowserUk's solution might be a little more clear (if a little less efficient) if it is viewed this way. Use one hash and one array. Store the initial set of file names as keys in a hash and store the second set in an array. You then only need to compare the list of files in the second set against the hash. Every file that doesn't exist in the hash can be deleted.
my %set01 = (); $set01{$_} = 1 foreach (glob("*.*"); # identify each file in director +y ..... # code that creates secondary files # my @new_files = (); # keep a list of +new files if you want my @set02 = glob("*.*"); foreach (@set02){ # push @new_files, $_ unless(exists($set01{$_})) unlink $_ unless(exists($set01{$_})); # delete files that weren't + aren't in original set } print "original files\n",sort keys %set01,"\nnew files\n",sort @set02, +"\n";
You can shorten/improve this code any number of ways but it does rather simply show what needs to be done

PJ
use strict; use warnings; use diagnostics;

In reply to Re: memorizing files and then removing the unnecessary ones by periapt
in thread memorizing files and then removing the unnecessary ones by Anonymous Monk

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.