从严格的pragma中免除一段perl代码
我有一段传统的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; ... {
$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是的。我认为他们不能碰那个代码(可能有很多,复杂的,等等),谢谢大家,这真的很有帮助。