#! perl -w use strict; use File::Find; use File::Copy; my $infile = 'c:/doclist1.chr'; # my $outfile = 'c:/doclist1.txt'; open IN, "<$infile" or die "Couldn't open $infile, $!"; # open OUT, ">$outfile" or die "Couldn't open $outfile, $!"; while() { chomp; my @fields = split /,/; my $path_str = $fields[6]; do { warn "Empty field 7"; next } unless $path_str; my @path = split /\\/, $path_str; # assuming you want to remove a few directories my @directory = join "\\", @path[0,5,6]; my $srcfile; my $dir = shift @directory; sub process_file { if ($File::Find::dir ne $dir) { $File::Find::prune = 1; return 0; } return 0 if ($_ !~ /\.rtf$/); copy($File::Find::name, "C:\\testfiles\\$_") or die "Failed to copy $_: $!\n"; return 1; } find(\&process_file, $dir); # print OUT "\n@directory"; } exit;