Quoth Leander Jedamus said:
I just wrote a simple script to fit my needs to copy from a SD-Card only
those photos which are newer then a timestamp-file.
Use at your on risk!
It can be found at
http://paste.ubuntu.com/1259875/
- Use Term::ANSIColor rather than rolling your own.
- Don't call subs with '&' unless you need to.
- 'warn' is a builtin. Defining a sub with that name is a bad idea.
- `date -r` is not portable (on my system it does something quite
different). Use stat() and POSIX::strftime.
- This
sub mycopy
{
my $sdir = $_[0];# source dir
my $ddir = $_[1];# destination dir
my $sfiles = $_[2];# the files to copy
my $rekursive = $_[3];# if going recursive? (y/n)
my $use_stamp = $_[4];# use stamp? (y/n)
my $stamp = $_[5];# the stamp
my $warn = $_[6];# warn level
my $debug = $_[7];#
is a horrid mess. Learn how to use list assignment.
- mkdirhier is not portable (it's part of X, from the bad old days when
mkdir didn't always understand -p). Use 'mkdir -p' (which ought to be)
or File:
ath (which definitely is).
- I can't follow the logic in 'mycopy' at all. It must be possible to
write it without quite so many layers of ifs.
- I don't think there is a single comment in that program which makes
anything clearer. Something like a general description of the logic
implemented by the twisty maze of ifs in mycopy would have been much
more useful than closing every sub with '};# sub foo'.
- Use multi-arg system
system "cp", "-p", $sfile, $dfile;
rather than trying to get shell quoting right. What if there's a file
with " in its name?
After that I got bored, but is this really doing anything you can't do
with find -newer | xargs cp ? Or just forget the stamps and use rsync.
Ben