use File::Copy; while ($idx = shift(@ARGV)) { print $idx, "\n"; open($fh, "<", $idx) or die "can't open $idx\n"; my $dir = "../" . substr($idx, 1); mkdir $dir; while (<$fh>) { last if /Files:/; } while (<$fh>) { next if /^#/; chomp; my ($file, $attributes, $checksum, $location) = (split ","); if ($location eq "AUTO") { print "$file is marked for auto generation\n"; } elsif ($location eq "DIR") { print "$file is marked as an unsaved directory listing\n"; } elsif ($location eq "ZERO") { open $zero, ">$dir/$file"; close $zero; } elsif (substr($location,1,1) eq "*") { print "$file marked as $location\n"; } else { $location = substr($location, 1) if substr($location, 0, 1) eq "^"; $location = "../$location"; copy($location, "$dir/$file") or die "Copy failed : $!"; } } close $fh; }