Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Perl DBI常量-如何访问?_Sql_Perl_Dbi_Subroutine - Fatal编程技术网

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->();
}