У меня есть файл .SQL, содержащий большое количество запросов. Они работают с базой данных, содержащей данные по нескольким штатам за несколько лет. Машина, на которой я работаю, может обрабатывать запросы только для одного состояния за один год.
Я пытаюсь создать сценарий Perl, который принимает пользовательский ввод для сокращения состояния, номера идентификатора состояния и года. Затем он создает каталог для этого штата и года. Затем он открывает «базовый» файл .SQL, выполняет поиск и заменяет идентификатор и год базового состояния на введенные пользователем данные и сохраняет этот новый файл .SQL в созданный каталог.
Текущий скрипт, который у меня есть (ниже), останавливается на
open(IN,'<$infile')
с
"Can't open [filename]"
Кажется, что он испытывает трудности с поиском или открытием .SQL файла. Я проверил четыре раза, чтобы убедиться, что пути правильные, и я даже попытался заменить
$path
с абсолютным путем к базовому файлу. Если бы у него были проблемы с созданием нового файла, у меня было бы больше направления, но, поскольку он не может найти / открыть базовый файл, я не знаю, как действовать.
#!/usr/local/bin/perl
use Cwd;
$path = getcwd();
#Cleans up the path
$path =~ s/\\/\//sg;
#User inputs
print "What is the 2 letter state abbreviation for the state? Ex. 'GA'\n";
$stlet = <>;
print "What is the 2 digit state abbreviation for the state? Ex. '13'\n";
$stdig = <>;
print "What four-digit year are you doing the calculations for? Ex. '2008'\n";
$year = <>;
chomp $stlet;
chomp $stdig;
chomp $year;
#Creates the directory
mkdir($stlet);
$new = $path."\/".$stlet;
mkdir("$new/$year");
$infile = '$path/Base/TABLE_1-26.sql';
$outfile = '$path/$stlet/$year/TABLE_1-26.sql';
open(IN,'<$infile') or die "Can't open $infile: $!\n";
open(OUT,">$infile2") or die "Can't open $outfile: $!\n";
print "Working...";
while (my $search = <IN>) {
chomp $search;
$search =~ s/WHERE pop.grp = 132008/WHERE pop.grp = $stdig$year/g;
print OUT "$search\n";
}
close(IN);
close(OUT);
Я знаю, что мне, вероятно, тоже нужно немного подправить регулярное выражение, но я пытаюсь брать вещи по одному. Это мой первый Perl-скрипт, и я действительно не смог найти ничего такого, что бы обрабатывало .SQL-файлы, такие, какие я могу понять.
Спасибо!