Sql Perl DBI常量-如何访问?
的文档包括这段建议的代码,用于获取代码和整数之间的映射:Sql Perl DBI常量-如何访问?,sql,perl,dbi,subroutine,Sql,Perl,Dbi,Subroutine,的文档包括这段建议的代码,用于获取代码和整数之间的映射: foreach (@{ $DBI::EXPORT_TAGS{sql_types} }) { printf "%s=%d\n", $_, &{"DBI::$_"}; } 但是perl 5.16.2不允许: Can't use string ("DBI::SQL_GUID") as a subroutine ref while "strict refs" in use 我不知道如何关闭严格引用,我怀疑作者无意让任何人这样做
foreach (@{ $DBI::EXPORT_TAGS{sql_types} }) {
printf "%s=%d\n", $_, &{"DBI::$_"};
}
但是perl 5.16.2不允许:
Can't use string ("DBI::SQL_GUID") as a subroutine ref while "strict refs" in use
我不知道如何关闭严格引用,我怀疑作者无意让任何人这样做。如何完成此子例程调用?您可以通过执行此操作来关闭严格的“refs”
{
no strict 'refs';
foreach (@{ $DBI::EXPORT_TAGS{sql_types} }) {
printf "%s=%d\n", $_, &{"DBI::$_"};
}
}
通过执行此操作,可以关闭严格的“参照”
{
no strict 'refs';
foreach (@{ $DBI::EXPORT_TAGS{sql_types} }) {
printf "%s=%d\n", $_, &{"DBI::$_"};
}
}
为什么你要把
放在没有严格的“refs”的位置代码>在外面?以下是更恰当地使用无严格的“refs”代码>:
for (@{ $DBI::EXPORT_TAGS{sql_types} }) {
no strict 'refs';
printf "%s=%d\n", $_, &{"DBI::$_"};
}
(不要说jmcneirney快了一微秒,因为那是错误的。)
或者,由于\&
不受严格的refs检查
for (@{ $DBI::EXPORT_TAGS{sql_types} }) {
my $ref = \&{"DBI::$_"};
printf "%s=%d\n", $_, $ref->();
}
为什么你要把放在没有严格的“refs”的位置代码>在外面?以下是更恰当地使用无严格的“refs”代码>:
for (@{ $DBI::EXPORT_TAGS{sql_types} }) {
no strict 'refs';
printf "%s=%d\n", $_, &{"DBI::$_"};
}
(不要说jmcneirney快了一微秒,因为那是错误的。)
或者,由于\&
不受严格的refs检查
for (@{ $DBI::EXPORT_TAGS{sql_types} }) {
my $ref = \&{"DBI::$_"};
printf "%s=%d\n", $_, $ref->();
}