#!/usr/bin/env perl
use strict;
use warnings;
use IO::All;
use Storable;
use Set::Scalar;
my $dir = shift || die $!;
my $io = io($dir);
my @listing = map { $_->name } $io->all_files(0);
my $file = qq(./listing.dat);
if ( !-e $file ) {
store \@listing, $file;
exit;
}
my $old_listing = retrieve($file);
my $new_set = Set::Scalar->new(@listing);
my $old_set = Set::Scalar->new(@$old_listing);
my $difference = $new_set - $old_set;
my $union = $old_set + $new_set;
@listing = $union->elements;
store \@listing, $file;
print join qq(\n), $difference->elements;
__END__
Please see also IO::All, Storable, Set::Scalar, map, join and perlreftut.
Regards, Karl
Edit: added shebang.
«The Crux of the Biscuit is the Apostrophe»
|