my $workDir = './whatever'; my $oraLogin = 'user/password\@database'; my @filesToLoad = ( { "FileName" => 'datfile.dat',"FileLoc" => 'filedir',"OKFile" => "OK.htm"}); chdir($workDir); foreach my $fileToLoad (@filesToLoad) { my $fileToLoadPath = "$workDir/$fileToLoad{'FileLoc'}"; my $dataFile = "$fileToLoadPath/$fileToLoa{'FileName'}"; my $okFile = "$fileToLoadPath/$fileToLoad{'OKFile'}"; if ($fileToLoad{'OKFile'}!="NO" && -e $dataFile ) { #remove OK file if (-e $okFile) {rm("$okFile");} #load available files opendir CTLDIR, $fileToLoadPath; my @allFiles = readdir(CTLDIR); closedir CTLDIR; # build array of files my @ctlFiles = grep {/\.run_ctl/i} @allFiles; my @sqlFiles = grep {/\.run_sql/i} @allFiles; #execute the files SQLloader($fileToLoadPath, \@ctlFiles); SQLplus ($fileToLoadPath, \@sqlFiles); } } sub SQLloader { my $path = shift; my $fileList = shift; foreach my $file (@{ $fileList }) { system("sqlldr $oraLogin control=$path/$file rows=10000 errors=99999 $path/sqlldr.log"); } } sub SQLplus { my $path = shift; my $fileList = shift; foreach my $file (@{ $fileList }) { system("sqlplus $oraLogin \@$path/$file"); } }