in reply to Delete from array

Aside from the good advice you've gotten on dealing with file system listings, there is an easy way to get the names which should exist and don't. Start, as already suggested, with a hash keyed by the names which should exist. We'll use hash slices,

my %should_be; @should_be{@shouldexist} = (); delete @should_be{@doexist}; { local $, = ', '; print q(These files should be there but aren't: ), keys %should_be; }
The bare block and localization of the ofs is just for dressing up the output.

After Compline,
Zaxo