=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!!

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other