Subject: | Fix for perl 5.19.4+ |
A bit of background. Under 5.19.4, @{ foo {"bar"} } is always parsed as @foo{bar} -- in previous version of perl, it was parsed as either that or @{ ( foo{"bar"} ) }, depending on whenever there was a newline after the '@{', and on whenever you were inside of an eval STRING or not.
Jifty::DBI::Collection uses '@{\neval {} ...}', which now parses as a syntax error.
To get things working again, you'll have to explicitly mark the inside of @{} as an expression, which can be achieved by changing this:
return map lc( $_->[0] ), @{
eval {
$dbh->column_info( '', '', $table, '' )->fetchall_arrayref( [3] );
}
|| $dbh->selectall_arrayref("DESCRIBE $table;")
|| $dbh->selectall_arrayref("DESCRIBE \u$table;")
|| []
};
Into this:
return map lc( $_->[0] ), @{(
eval {
$dbh->column_info( '', '', $table, '' )->fetchall_arrayref( [3] );
}
|| $dbh->selectall_arrayref("DESCRIBE $table;")
|| $dbh->selectall_arrayref("DESCRIBE \u$table;")
|| []
)};