And the good thing is, it’s available in core Perl!So we will use File::Copy module and will call copy() function to copy the file and move() function to move the files.
Ok then, How it works?
Copy Function
The copy
function takes two parameters: a file to copy from and a file to copy to. Either argument may be a string, a FileHandle reference or a FileHandle glob. Obviously, if the first argument is a filehandle of some sort, it will be read from, and if it is a file name it will be opened for reading. Likewise, the second argument will be written to (and created if need be). Trying to copy a file on top of itself is a fatal error.
If the destination (second argument) already exists and is a directory, and the source (first argument) is not a filehandle, then the source file will be copied into the directory specified by the destination, using the same base name as the source file. It’s a failure to have a filehandle as the source when the destination is a directory.
Note that passing in files as handles instead of names may lead to loss of information on some operating systems; it is recommended that you use file names whenever possible. Files are opened in binary mode where applicable. To get a consistent behaviour when copying from a filehandle to a file, use binmode
on the filehandle.
#!/usr/bin/perl; use File::Copy; print"content-type: text/html \n\n"; #The header $filetobecopied = "aliencoders.php"; $newfile = "alien_home/aliencoders.php"; copy($filetobecopied, $newfile) or die "File cannot be copied.";
Here, we have simply duplicated the “aliencoders.php” file . We have used a shorthand way in the example, but it is better to hardcode the full URL (file path)Move function
The move
function also takes two parameters: the current name and the intended name of the file to be moved. If the destination already exists and is a directory, and the source is not a directory, then the source file will be renamed into the directory specified by the destination.
If possible, move() will simply rename the file. Otherwise, it copies the file to the new location and deletes the original. If an error occurs during this copy-and-delete process, you may be left with a (possibly partial) copy of the file under the destination name.
Note: It has syscopy and rmscopy functions too. Just go through the File::Copy CPAN or run
perldoc File::Copy in command prompt (I used Solaris box)
Perl code to Move the Files
#!/usr/bin/perl; use File::Copy; print "content-type: text/html \n\n"; #The header $oldlocation = "aliencoders.pl"; $newlocation = "alien_perl/aliencoders.pl" move($oldlocation, $newlocation);
Source: CPAN