in reply to Anyone want to compress this a little more?

I'd suggest that instead of worrying about compressing the code, you focused on making it readable.
Good software is one that, besides running properly, is easily understandable.

update
This is not a challenge to compress the code.
The title should be 'Debug this for me'!
I rearranged the code and, instead of making it shorter, I made it longer. But still, I think it shows better what (I think) you are trying to do.
my $workDir = "/workdir"; my $oraLogin = "user/password@database"; my @filesToLoad = ( { "FileName" => 'file1.dat', "FileLoc" => 'dir1'}) +; foreach my $fileToLoad (@filesToLoad) { my $fileToLoadPath = "$workDir/$fileToLoad{'FileLoc'}"; opendir CTLDIR, $dileToLoadPath; my @allFiles = readdir(CTLDIR); closedir CTLDIR; #my @ctlFiles = grep { /\.run_ctl/i && -f $workingDir/$_} readdir( +CTLDIR); #what is workingDir? aren't all .run_ctl files? my @ctlFiles = grep { /\.run_ctl/i} @allFiles; + my @sqlFiles = grep { /\.run_sql/i} @allFiles; loader($fileToLoadPath, \@ctlFiles); loader($fileToLoadPath, \@sqlFiles); } sub loader { my $path = shift; my $fileList = shift; foreach my $file (@{ $fileList }) { system("sqlldr $oraLogin $path/$file rows=10000 errors=99999 $ +path/sqlldr.log"); } }