Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Simple copy script called mycopy.pl
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Ben Morrow  
View profile  
 More options Oct 4 2012, 2:03 pm
Newsgroups: comp.lang.perl.misc
From: Ben Morrow <b...@morrow.me.uk>
Date: Thu, 4 Oct 2012 18:57:14 +0100
Local: Thurs, Oct 4 2012 1:57 pm
Subject: Re: Simple copy script called mycopy.pl

Quoth Leander Jedamus <ljeda...@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


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.