GT::File::Tools - Export tools for dealing with files
use GT::File::Tools qw/:all/;
# Find all files in a users home directory.
find "/home/user", sub { print shift };
# Rename a file1 to file2.
move "file1", "file2";
# Remove a list of files.
del @files;
# Remove a users home directory
deldir "/home/foo";
# Copy a file
copy "file1", "file2";
# Recursively copy a directory.
copy "/home/user", "/home/user.bak";
# Recursively make a directory.
rmkdir "/home/user/www/cgi-bin", 0755;
# Parse a filename into directory, file and is_relative components
my ($dir, $file, $is_rel) = parsefile("/home/foo/file.txt");
# Get the file portion of a filename
my $file = filename("/home/foo/file.txt");
# Get the directory portion of a filename.
my $dir = dirname("/home/foo/file.txt");
# Use shell like expansion to get a list of absolute files.
my @src = expand("*.c", "*.h");
GT::File::Tools is designed to export requested functions into your namespace. These function perform various file operations.
GT::File::Tools exports functions to your namespace. Here is a list of the functions you can request to be exported.
find takes three parameters: directory to search in, callback to run for
each file and/or directory found, and a hash ref of options. Note: this is
the opposite order of File::Find's find() function! The following options
can be passed set:
find("/home/a*", sub { print shift; }, { globbing => 1 });
would fine all home directories starting with the letter a. This option is off by default.
move has the same syntax as the system mv command:
move 'file', 'file2';
move 'file1', 'file2', 'dir';
move 'file1', 'file2', 'dir3', 'dir';
move '*.c', 'dir', { globbing => 1 };
The only difference is the last argument can be a hash ref of options. The following options are allowed:
del has the same syntax as the rm system command, but it can not remove
directories. Use deldir below to recursively remove files.
del 'file1';
del '*.c', { globbing => 1 };
del 'a', 'b', 'c';
It takes a list of files or directories to delete, and an optional hash ref of options. The following options are allowed:
deldir is similiar to del, but allows recursive deletes of directories:
deldir 'file1';
deldir 'dir11', 'dir2', 'dir3';
deldir '/home/a*', { globbing => 1 };
It takes a list of files and/or directories to remove, and an optional hash ref of options. The following options are allowed:
copy is similiar to the system cp command:
copy 'file1', 'file2';
copy 'file1', 'file2', 'file3', 'dir1';
copy '*.c', '/usr/local/src', { globbing => 1 };
copy
It copies a source file to a destination file or directory. You can also specify multiple source files, and copy them into a single directory. The last argument should be a hash ref of options:
rmkdir recursively makes a directory. It takes the same arguments as
perl's mkdir():
rmkdir("/home/alex/create/these/dirs", 0755) or die "Can't rmkdir: $!";
This function takes any type of filename (relative, fullpath, etc) and returns the inputs directory, file, and whether it is a relative path or not. For example:
my ($directory, $file, $is_relative) = parsefile("../foo/bar.txt");
Returns the directory portion of a filename.
Returns the file portion of a filename.
Uses shell like expansion to expand a list of filenames to full paths. For example:
my @source = expand("*.c", "*.h");
my @homedirs = expand("/home/*");
If you pass in relative paths, expand always returns absolute paths of expanded files. Note: this does not actually go to the shell.
This module depends on perl's Cwd module for getting the current working directory. It also uses GT::AutoLoader to load on demand functions.
Scott Beck
Copyright (c) 2004 Gossamer Threads Inc. All Rights Reserved. http://www.gossamer-threads.com/
Revision: $Id: Tools.pm,v 1.53 2004/02/17 01:33:07 jagerman Exp $