=head1 NAME
File autobackup utility
=head1 SYNOPSIS
autobackup -d:
The d flag backs up files to/from the locations hardcoded in
+to
the script. Only use this if you have edited in your own loc
+ations.
autobackup -h:
The h flag displays usage information. Use it for instructio
+ns.
autobackup -p FILEPATH:
The p flag should be used if you have not set up the script
+to work with the d flag.
When calling the script with the p flag, you should specifiy
+ the filepath of the files you want
to be copied as an argument: "autobackup -p C:\myfiles". You
+ will then be asked for a target
location for the files in the directory that you specified w
+hen you called the program.
I'M ASSUMING WE ALL KNOW HOW TO ENTER PROPPER FILEPATHS...
=head1 DESCRIPTION
In a nutshell, this script copies files from one location to another.
I wrote this script to transfer files from my computer to an external
+drive easily more easily.
=head1 DEPENDENCIES
This script requires the File::Copy::Recursive module.
=head1 AUTHOR
Matthew Young (mabufo@gmail.com) [www.theangrywalrus.com/blog]
=cut
#!usr/bin/perl
use strict;
use warnings;
use File::Copy::Recursive qw(dircopy);
use Getopt::Std;
use Pod::Usage;
#--------file copy vars (uncomment if you want)
#local $File::Copy::Recursive::SkipFlop = 1; #keeps the script going i
+f somethign fails
#$File::Copy::Recursive::MaxDepth #you can set this to change the maxi
+mum depth of the copy.
#I get to play with hashes a bit...
#grabs our argv values and stores them in a hash (key is the flag, val
+ue is the actual argument)
my %options=();
getopts('dp:h', \%options);
pod2usage(2) if (keys %options != 1);
if ($options{d}){
#if 'default' flag:
#paths can be changed by editing what's in qw() - on the left is l
+ocation of files,
#on the right is where you want to put them.
my ($original, $targetlocation) = qw/C:\test C:\test1/;
my ($numberoffiles, $numberofdirs, $depth) = dircopy($original, $t
+argetlocation) or die $!;
print "$numberoffiles files copied, across $numberofdirs directori
+es, at a level of depth of $depth.";
}
if ($options{p}){
#if 'path' flag:
my $original = $options{p};
print "Target directory: ";
my $targetlocation = <STDIN>;
chomp $targetlocation;
my ($numberoffiles, $numberofdirs, $depth) = dircopy($original, $t
+argetlocation) or die $!;
print "$numberoffiles files copied, across $numberofdirs directori
+es, at a level of depth of $depth.";
}
if ($options{h}){
pod2usage(2); #YES!
}
Once again I apologize for the formatting - it looks a lot better inside of eclipse :). This is my first actual script - so if you guys see any glaring errors or bad practices - point them out!
EDIT: Now with Pod::Usage!!
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.