i have written a script that will search a directory given as an arg and it will read a temp directory with files, inwhich these files contain filenames of the files to search for. When it finds the file, it puts it in the specified directory (which is obtained from the given filenames in the temp folder)

i borrowed the directory parsing part of the script from cdarke and modified it just a hair... so big thanks to that guy :)

Here is the full script, please help guide me as to what i may have done wrong, or if you download the script and files and figure out an alot faster or shorter version, please show me cz i baked my brain on this for a day and a half(tho i do feel like i am getting somewhat better lol)
use strict; use warnings; use File::Slurp; use File::Copy qw(copy); use File::Path qw(make_path); my @dev_flash000 = (); my @dev_flash001 = (); my @dev_flash002 = (); my @dev_flash003 = (); my @dev_flash004 = (); my @dev_flash005 = (); my @dev_flash006 = (); my @dev_flash007 = (); my @dev_flash008 = (); my @dev_flash009 = (); my @dev_flash010 = (); my @dev_flash011 = (); my @dev_flash012 = (); my @dev_flash013 = (); my @dev_flash014 = (); my @dev_flash015 = (); my @dev_flash016 = (); my @dev_flash017 = (); my @dev_flash018 = (); my @dev_flash019 = (); my @dev_flash020 = (); my @dev_flash021 = (); my @dev_flash022 = (); my @dev_flash023 = (); my @dev_flash024 = (); my @dev_flash025 = (); my @dev_flash026 = (); my @dev_flash027 = (); sub make_folders { my $tempdir = "temp"; opendir( DIR, $tempdir ); while ( my $tempfile = readdir(DIR) ) { next if -d $tempfile; make_path("copied_files/$tempfile/duplicate"); } } sub search_dir { my ($dir) = @_; my $dh; if ( !opendir( $dh, $dir ) ) { return; } while ( my $file = readdir($dh) ) { next if -d $file; my $path = "$dir/$file"; if ( -d $path ) { search_dir($path); } else { extract_files( $dir, $file ); } } } sub extract_files { my $des = ''; my ( $dir, $file ) = @_; my $dev_flash000 = read_file('temp/dev_flash000'); my $dev_flash001 = read_file('temp/dev_flash001'); my $dev_flash002 = read_file('temp/dev_flash002'); my $dev_flash003 = read_file('temp/dev_flash003'); my $dev_flash004 = read_file('temp/dev_flash004'); my $dev_flash005 = read_file('temp/dev_flash005'); my $dev_flash006 = read_file('temp/dev_flash006'); my $dev_flash007 = read_file('temp/dev_flash007'); my $dev_flash008 = read_file('temp/dev_flash008'); my $dev_flash009 = read_file('temp/dev_flash009'); my $dev_flash010 = read_file('temp/dev_flash010'); my $dev_flash011 = read_file('temp/dev_flash011'); my $dev_flash012 = read_file('temp/dev_flash012'); my $dev_flash013 = read_file('temp/dev_flash013'); my $dev_flash014 = read_file('temp/dev_flash014'); my $dev_flash015 = read_file('temp/dev_flash015'); my $dev_flash016 = read_file('temp/dev_flash016'); my $dev_flash017 = read_file('temp/dev_flash017'); my $dev_flash018 = read_file('temp/dev_flash018'); my $dev_flash019 = read_file('temp/dev_flash019'); my $dev_flash020 = read_file('temp/dev_flash020'); my $dev_flash021 = read_file('temp/dev_flash021'); my $dev_flash022 = read_file('temp/dev_flash022'); my $dev_flash023 = read_file('temp/dev_flash023'); my $dev_flash024 = read_file('temp/dev_flash024'); my $dev_flash025 = read_file('temp/dev_flash025'); my $dev_flash026 = read_file('temp/dev_flash026'); my $dev_flash027 = read_file('temp/dev_flash027'); if ( $dev_flash000 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash000/$file" ) { push @dev_flash000, "$file\n"; my $des = "copied_files/dev_flash000/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash000, "$file\n"; my $des = "copied_files/dev_flash000/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash001 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash001/$file" ) { push @dev_flash001, "$file\n"; my $des = "copied_files/dev_flash001/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash001, "$file\n"; my $des = "copied_files/dev_flash001/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash002 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash002/$file" ) { push @dev_flash002, "$file\n"; my $des = "copied_files/dev_flash002/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash002, "$file\n"; my $des = "copied_files/dev_flash002/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash003 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash003/$file" ) { push @dev_flash003, "$file\n"; my $des = "copied_files/dev_flash003/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash003, "$file\n"; my $des = "copied_files/dev_flash003/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash004 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash004/$file" ) { push @dev_flash004, "$file\n"; my $des = "copied_files/dev_flash004/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash004, "$file\n"; my $des = "copied_files/dev_flash004/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash005 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash005/$file" ) { push @dev_flash005, "$file\n"; my $des = "copied_files/dev_flash005/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash005, "$file\n"; my $des = "copied_files/dev_flash005/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash006 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash006/$file" ) { push @dev_flash006, "$file\n"; my $des = "copied_files/dev_flash006/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash006, "$file\n"; my $des = "copied_files/dev_flash006/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash007 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash007/$file" ) { push @dev_flash007, "$file\n"; my $des = "copied_files/dev_flash007/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash007, "$file\n"; my $des = "copied_files/dev_flash007/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash008 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash008/$file" ) { push @dev_flash008, "$file\n"; my $des = "copied_files/dev_flash008/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash008, "$file\n"; my $des = "copied_files/dev_flash008/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash009 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash009/$file" ) { push @dev_flash009, "$file\n"; my $des = "copied_files/dev_flash009/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash009, "$file\n"; my $des = "copied_files/dev_flash009/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash010 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash010/$file" ) { push @dev_flash010, "$file\n"; my $des = "copied_files/dev_flash010/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash010, "$file\n"; my $des = "copied_files/dev_flash010/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash011 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash011/$file" ) { push @dev_flash011, "$file\n"; my $des = "copied_files/dev_flash011/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash011, "$file\n"; my $des = "copied_files/dev_flash011/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash012 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash012/$file" ) { push @dev_flash012, "$file\n"; my $des = "copied_files/dev_flash012/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash012, "$file\n"; my $des = "copied_files/dev_flash012/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash013 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash013/$file" ) { push @dev_flash013, "$file\n"; my $des = "copied_files/dev_flash013/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash013, "$file\n"; my $des = "copied_files/dev_flash013/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash014 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash014/$file" ) { push @dev_flash014, "$file\n"; my $des = "copied_files/dev_flash014/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash014, "$file\n"; my $des = "copied_files/dev_flash014/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash015 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash015/$file" ) { push @dev_flash015, "$file\n"; my $des = "copied_files/dev_flash015/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash015, "$file\n"; my $des = "copied_files/dev_flash015/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash016 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash016/$file" ) { push @dev_flash016, "$file\n"; my $des = "copied_files/dev_flash016/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash016, "$file\n"; my $des = "copied_files/dev_flash016/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash017 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash017/$file" ) { push @dev_flash017, "$file\n"; my $des = "copied_files/dev_flash017/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash017, "$file\n"; my $des = "copied_files/dev_flash017/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash018 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash018/$file" ) { push @dev_flash018, "$file\n"; my $des = "copied_files/dev_flash018/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash018, "$file\n"; my $des = "copied_files/dev_flash018/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash019 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash019/$file" ) { push @dev_flash019, "$file\n"; my $des = "copied_files/dev_flash019/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash019, "$file\n"; my $des = "copied_files/dev_flash019/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash020 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash020/$file" ) { push @dev_flash020, "$file\n"; my $des = "copied_files/dev_flash020/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash020, "$file\n"; my $des = "copied_files/dev_flash020/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash021 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash021/$file" ) { push @dev_flash021, "$file\n"; my $des = "copied_files/dev_flash021/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash021, "$file\n"; my $des = "copied_files/dev_flash021/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash022 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash022/$file" ) { push @dev_flash022, "$file\n"; my $des = "copied_files/dev_flash022/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash022, "$file\n"; my $des = "copied_files/dev_flash022/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash023 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash023/$file" ) { push @dev_flash023, "$file\n"; my $des = "copied_files/dev_flash023/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash023, "$file\n"; my $des = "copied_files/dev_flash023/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash024 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash024/$file" ) { push @dev_flash024, "$file\n"; my $des = "copied_files/dev_flash024/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash024, "$file\n"; my $des = "copied_files/dev_flash024/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash025 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash025/$file" ) { push @dev_flash025, "$file\n"; my $des = "copied_files/dev_flash025/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash025, "$file\n"; my $des = "copied_files/dev_flash025/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash026 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash026/$file" ) { push @dev_flash026, "$file\n"; my $des = "copied_files/dev_flash026/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash026, "$file\n"; my $des = "copied_files/dev_flash026/"; copy( "$dir/$file", $des ) or die "$!"; } } elsif ( $dev_flash027 =~ /\b$file\b/i ) { if ( -e "copied_files/dev_flash027/$file" ) { push @dev_flash027, "$file\n"; my $des = "copied_files/dev_flash027/duplicate/"; copy( "$dir/$file", $des ) or die "$!"; } else { push @dev_flash027, "$file\n"; my $des = "copied_files/dev_flash027/"; copy( "$dir/$file", $des ) or die "$!"; } } else { ###do nothing } } sub print_dev_flash { if (@dev_flash000 == 0){ print ''; }else{ print "\n\n dev_flash000\n|==================================>\ +n"; foreach my $filename(@dev_flash000){ print "\t$filename"; } } if (@dev_flash001 == 0){ print ''; }else{ print "\n\n dev_flash001\n|==================================>\ +n"; foreach my $filename(@dev_flash001){ print "\t$filename"; } } if (@dev_flash002 == 0){ print ''; }else{ print "\n\n dev_flash002\n|==================================>\ +n"; foreach my $filename(@dev_flash002){ print "\t$filename"; } } if (@dev_flash003 == 0){ print ''; }else{ print "\n\n dev_flash003\n|==================================>\ +n"; foreach my $filename(@dev_flash003){ print "\t$filename"; } } if (@dev_flash004 == 0){ print ''; }else{ print "\n\n dev_flash004\n|==================================>\ +n"; foreach my $filename(@dev_flash004){ print "\t$filename"; } } if (@dev_flash005 == 0){ print ''; }else{ print "\n\n dev_flash005\n|==================================>\ +n"; foreach my $filename(@dev_flash005){ print "\t$filename"; } } if (@dev_flash006 == 0){ print ''; }else{ print "\n\n dev_flash006\n|==================================>\ +n"; foreach my $filename(@dev_flash006){ print "\t$filename"; } } if (@dev_flash007 == 0){ print ''; }else{ print "\n\n dev_flash007\n|==================================>\ +n"; foreach my $filename(@dev_flash007){ print "\t$filename"; } } if (@dev_flash008 == 0){ print ''; }else{ print "\n\n dev_flash008\n|==================================>\ +n"; foreach my $filename(@dev_flash008){ print "\t$filename"; } } if (@dev_flash009 == 0){ print ''; }else{ print "\n\n dev_flash009\n|==================================>\ +n"; foreach my $filename(@dev_flash009){ print "\t$filename"; } } if (@dev_flash010 == 0){ print ''; }else{ print "\n\n dev_flash010\n|==================================>\ +n"; foreach my $filename(@dev_flash010){ print "\t$filename"; } } if (@dev_flash011 == 0){ print ''; }else{ print "\n\n dev_flash011\n|==================================>\ +n"; foreach my $filename(@dev_flash011){ print "\t$filename"; } } if (@dev_flash012 == 0){ print ''; }else{ print "\n\n dev_flash012\n|==================================>\ +n"; foreach my $filename(@dev_flash012){ print "\t$filename"; } } if (@dev_flash013 == 0){ print ''; }else{ print "\n\n dev_flash013\n|==================================>\ +n"; foreach my $filename(@dev_flash013){ print "\t$filename"; } } if (@dev_flash014 == 0){ print ''; }else{ print "\n\n dev_flash014\n|==================================>\ +n"; foreach my $filename(@dev_flash014){ print "\t$filename"; } } if (@dev_flash015 == 0){ print ''; }else{ print "\n\n dev_flash015\n|==================================>\ +n"; foreach my $filename(@dev_flash015){ print "\t$filename"; } } if (@dev_flash016 == 0){ print ''; }else{ print "\n\n dev_flash016\n|==================================>\ +n"; foreach my $filename(@dev_flash016){ print "\t$filename"; } } if (@dev_flash017 == 0){ print ''; }else{ print "\n\n dev_flash017\n|==================================>\ +n"; foreach my $filename(@dev_flash017){ print "\t$filename"; } } if (@dev_flash018 == 0){ print ''; }else{ print "\n\n dev_flash018\n|==================================>\ +n"; foreach my $filename(@dev_flash018){ print "\t$filename"; } } if (@dev_flash019 == 0){ print ''; }else{ print "\n\n dev_flash019\n|==================================>\ +n"; foreach my $filename(@dev_flash019){ print "\t$filename"; } } if (@dev_flash020 == 0){ print ''; }else{ print "\n\n dev_flash020\n|==================================>\ +n"; foreach my $filename(@dev_flash020){ print "\t$filename"; } } if (@dev_flash021 == 0){ print ''; }else{ print "\n\n dev_flash021\n|==================================>\ +n"; foreach my $filename(@dev_flash021){ print "\t$filename"; } } if (@dev_flash022 == 0){ print ''; }else{ print "\n\n dev_flash022\n|==================================>\ +n"; foreach my $filename(@dev_flash022){ print "\t$filename"; } } if (@dev_flash023 == 0){ print ''; }else{ print "\n\n dev_flash023\n|==================================>\ +n"; foreach my $filename(@dev_flash023){ print "\t$filename"; } } if (@dev_flash024 == 0){ print ''; }else{ print "\n\n dev_flash024\n|==================================>\ +n"; foreach my $filename(@dev_flash024){ print "\t$filename"; } } if (@dev_flash025 == 0){ print ''; }else{ print "\n\n dev_flash025\n|==================================>\ +n"; foreach my $filename(@dev_flash025){ print "\t$filename"; } } if (@dev_flash026 == 0){ print ''; }else{ print "\n\n dev_flash026\n|==================================>\ +n"; foreach my $filename(@dev_flash026){ print "\t$filename"; } } if (@dev_flash027 == 0){ print ''; }else{ print "\n\n dev_flash027\n|==================================>\ +n"; foreach my $filename(@dev_flash027){ print "\t$filename"; } } } my $dir = $ARGV[0]; chomp($dir); if ( not defined $dir ) { print "\nUsage: scan.pl dev_flash\n"; exit(0); } make_folders(); search_dir($dir); print_dev_flash();

What made this so hard for me was each file needed to go into a specific directory, thats where i got the idea to name the directory after the filenames in the temp folder ( if you download the files you will see what i mean ). i need to go back through and add my parenthesis around strings and variables, just to keep it clean ofcourse, but its working great on win7 64 bit with active state. But hopefully someone is able to crush these 700 something lines of code down some. i am proud of this and i even used warnings; and use strict; and no errors ;)

here are the files , just download them and unzip it anywhere and run the script. and you will see what it does.

In reply to directories and sub directories and copying or moving hundereds or thousands of files :) by james28909

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.