Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Simple copy script called mycopy.pl

28 views
Skip to first unread message

Leander Jedamus

unread,
Oct 4, 2012, 11:12:30 AM10/4/12
to
Hi!

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/

A short instruction-list can be found at
http://paste.ubuntu.com/1260073/

Enjoy!
Leander Jedamus

Ben Morrow

unread,
Oct 4, 2012, 1:57:14 PM10/4/12
to

Quoth Leander Jedamus <ljed...@gmail.com>:
>
> 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::Path (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

Leander Jedamus

unread,
Oct 5, 2012, 3:13:19 AM10/5/12
to
Thanks! I will look into it.

Grüße
Leander Jedamus

bugbear

unread,
Oct 5, 2012, 3:54:48 AM10/5/12
to
Ben Morrow wrote:

>
> 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.

I actually DO use rsync for this.

BugBear
0 new messages