我可以在没有数据库连接的情况下使用DBD :: mysql quote()函数吗?

Ste*_*ler 8 mysql sql perl

我正在使用Perl编写.sql文件,而不是直接写入mysql数据库.我需要引用该文件中的字符串.看起来像$ dbh-quote()方法做我想要的.除了我无法弄清楚如何在没有数据库连接的情况下使用它.我做了一个虚拟连接,但是如果没有数据库运行我似乎无法做到这一点,并且要运行这个cron作业的机器将没有.

这个问题是类似的:Perl DBI没有访问数据库,并且接受的答案表明"你可能尝试加载你需要的驱动程序并直接调用函数",这是我想做的,但我无法弄清楚怎么做.

Ste*_*ler 0

听起来答案是响亮的“你做不到”。无论如何,这里是我根据 mysql 文档http://dev.mysql.com/doc/refman/5.0/en/string-literals.html关于需要引用的内容创建的引用函数。

我的输入是UTF-8,perl在内部以UTF-8存储字符串,我的输出是UTF-8,我的数据库也是UTF-8。鉴于字符集是一致的,我不需要太担心它的转义目的。

sub quote(){
    my ($s) = @_;
    $s =~ s/\\\\/\\/g;
    $s =~ s/\'/\\'/g;
    $s =~ s/\"/\\"/g;
    $s =~ s/\x08/\\b/g;
    $s =~ s/\n/\\n/g;
    $s =~ s/\r/\\r/g;
    $s =~ s/\t/\\t/g;
    $s =~ s/\x1A/\\Z/g;
    return $s;
}
Run Code Online (Sandbox Code Playgroud)

我测试了这个功能,它似乎可以满足我的要求。太糟糕了,这样的东西无法从已经编写好的库中访问。