Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
从严格的pragma中免除一段perl代码_Perl_Dbi_Strict_Bareword - Fatal编程技术网

从严格的pragma中免除一段perl代码

从严格的pragma中免除一段perl代码,perl,dbi,strict,bareword,Perl,Dbi,Strict,Bareword,我有一段传统的perl代码,它与以下结构一起使用 $db->bind_param(1, $some_blob, {TYPE => SQL_BLOB}); 其中SQL_BLOB是一个空话。我想在同一个文件中使用严格的pragma,但它会抱怨这个词。(“strict subs”正在使用时,不允许使用“Bareword”SQL\u BLOB”)我是否可以免除这一行的严格检查? 此杂注的效果仅限于当前文件或作用域块 它也可以在一个范围内关闭。所以 use strict; ... {

我有一段传统的perl代码,它与以下结构一起使用

$db->bind_param(1, $some_blob, {TYPE => SQL_BLOB});
其中SQL_BLOB是一个空话。我想在同一个文件中使用严格的pragma,但它会抱怨这个词。(“strict subs”正在使用时,不允许使用“Bareword”SQL\u BLOB”)我是否可以免除这一行的严格检查?

此杂注的效果仅限于当前文件或作用域块

它也可以在一个范围内关闭。所以

use strict;

...

{
    no strict 'subs';

    $db->bind_param(1, $some_blob, {TYPE => SQL_BLOB});
}

# strict is back on

编辑

然而,上面的代码只允许使用裸字,但仍然不知道(整数常量)是什么。这可以通过使用
:sql_types
,导入此类常量来解决;看见无论如何,这是满足
严格要求的一种非常好的方法


多亏安迪·莱斯特(Andy Lester)提出了这个问题,请查看他们的,尽管您确实可以关闭
严格的
pragma,但这并不能解决您的问题。您只需将值“SQL_BLOB”作为类型传递,但
bind_param
无法识别它

您需要添加一个导入:

use DBI qw(:sql_types);

如果您已经
使用了
ing DBI,那么将
:sql\u类型
添加到您从中导入的内容中。

虽然这确实会停止警告,但程序不会工作。请看下面我的答案。@AndyLester谢谢,我不知道类型常量。使用
$db->bind_参数(1,$some_blob,{TYPE=>“SQL_blob”})添加了一个note比关闭“严格”要好。(当然,正如你提到的,这实际上并不正确。)@ikegami是的。我认为他们不能碰那个代码(可能有很多,复杂的,等等),谢谢大家,这真的很有帮助。