[英]Perl DBI Constants - how to access?
获取类型信息的文档包括以下建议代码,用于获取代码与整数之间的映射:
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
我不知道该如何关闭严格的引用,而且我怀疑任何人这样做都不是作者的意图。 该子例程调用如何完成?
您可以通过执行以下操作关闭严格的“引用”
{
no strict 'refs';
foreach (@{ $DBI::EXPORT_TAGS{sql_types} }) {
printf "%s=%d\n", $_, &{"DBI::$_"};
}
}
您为什么不提出no strict 'refs';
在外面? 以下是对no strict 'refs';
更适当的使用no strict 'refs';
:
for (@{ $DBI::EXPORT_TAGS{sql_types} }) {
no strict 'refs';
printf "%s=%d\n", $_, &{"DBI::$_"};
}
(也不要说jmcneirney快一微秒,因为那是错误的。)
或者,由于\\&
不受严格的引用检查,
for (@{ $DBI::EXPORT_TAGS{sql_types} }) {
my $ref = \&{"DBI::$_"};
printf "%s=%d\n", $_, $ref->();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.