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"); } }