Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Feedback on my second script

by Corion (Patriarch)
on May 15, 2013 at 09:38 UTC ( [id://1033649]=note: print w/replies, xml ) Need Help??


in reply to Feedback on my second script

Two small things:

# Check if a destination is defined unless (defined $destination) { showUsage (); }

I would like an improved error message here, like

# Check if a destination is defined unless (defined $destination) { print "No destination given.\n"; showUsage (); }

And at the place where you run rsync, you capture all of its (voluminous) output just to print it out right afterwards:

# Run the program and show the output my @result; @result = `$cmd 2>&1`; foreach my $result (@result) { print $result; chomp $result; }

I would change that to simply use system instead, which will do the printing directly. This would also add error checking so your script signals if the underlying rsync failed:

# Run the program and show the output system( "$cmd 2>&1") == 0 or die "rsync failed: $! / $?";

Of course, if you really want/need to do post-processing of the rsync output, as your chomp indicates, you will need to capture the output as you did.

Replies are listed 'Best First'.
Re^2: Feedback on my second script
by Jackiejarvis (Novice) on May 15, 2013 at 10:11 UTC

    Thanks for the feedback. I have inserted the things you suggest. About the running rsync. In the future I would send a mail to the admin if there is an error with the error message included. How could i do something like this is it possible if i use system or not?

    greetings!

      Yes, if you want to extend the program later to send the output via mail (but only in the case of error), your current approach makes sense.

      I would send a mail... How could i do something like this

      I've traditionally used Mail::Sendmail for that; although, Mail::Send may also be worth considering.

      Note too that it's generally unsafe to allow the user to specify a destination address for mail (unless you have carefully authenticated the user). In simple cases like this, it's often best to hardcode the destination address. In more advanced cases, possible destination addresses can be stored in a configuration file or database that only system administrators can edit, and the user can be allowed to select from among them.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1033649]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2024-03-28 22:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found