Я разрабатываю сценарий Perl для запроса API PasteBin с использованием потоков и DBD :: SQLite для хранения информации на будущее.
После запуска моего скрипта я получаю следующую ошибку:
DBD::SQLite::db do failed: near "day": syntax error at getpaste.pl line 113.
Thread 3 terminated abnormally: DBD::SQLite::db do failed: near "day": syntax error at getpaste.pl line 113.
Использование моего кода для отладки, вот что я вижу в thread 3
:
enum _Days {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
class HeadingItem implements ListItem {
String _weekday;
final int time;
final DocumentReference reference;
set day(String weekday) {
var value = _Days.values[int.parse(weekday) - 1].toString();
var idx = value.indexOf(".") + 1;
var result = value.substring(idx, value.length);
_weekday = result;
}
String get day {
return _weekday;
}
HeadingItem.fromMap(Map<String, dynamic> map, {this.reference})
: assert(map['day'] != null),
assert(map['time'] != null),
day = map['day'], // 'day' isn't a field in the enclosing class <--- this is the error that im stuck on...
time = map['time'];
HeadingItem.fromSnapshot(DocumentSnapshot snapshot) : this.fromMap(snapshot.data, reference: snapshot.reference);
}
Если бы мне нужно было сделать обоснованное предположение, оно взорвалось бы на String get day {
Вот фрагмент моего кода, где это имеет отношение:
sub threadCheckKey {
my ($url, $key) = @_;
my $fullURL = $url.$key;
my @flaggedRegex = ();
my $date = strftime "%D", localtime;
my @data = ();
my $thread = threads->create(sub {
my $dbConnection = openDB();
open(GET_DATA, "curl -s " . $fullURL . " -k 2>&1 |") or die("$!");
open(WRITE_FILE, ">", $key . ".txt") or die("$!");
while(my $line = <GET_DATA>) {
print WRITE_FILE $line;
foreach my $regex(@regexs) {
if($line =~ m/$regex/) {
if(!($regex ~~ @flaggedRegex)) {
push(@flaggedRegex, $regex);
}
}
}
}
close(WRITE_FILE);
close(GET_DATA);
open(READ_FILE, $key . ".txt") or die("$!");
while(my $line = <READ_FILE>) {
push(@data, $line);
}
close(READ_FILE);
my $updateRow = qq(UPDATE $tables[0] set data = \'@data\', date = \'$date\', regex = \'@flaggedRegex\' where pastekey = \'$key\');
my $executeRowUpdate = $dbConnection->do($updateRow);
if($executeRowUpdate < 0) {
print $DBI::errstr;
}
Строка 113 в этом случае - my $executeRowUpdate = $dbConnection->do($updateRow);
Зная Perl, он действительно жалуется на мое утверждение UPDATE чуть выше него.
Куда я иду с этим? Я новичок, когда дело доходит до взаимодействия с чем-либо, связанным с SQL.