perl中的单引号和双引号

时间:2013-03-01 21:21:16

标签: perl postgresql quotes double-quotes

我是perl的新手,我正在尝试从Perl脚本执行操作系统命令。

使用IPC::Open3执行操作系统命令,命令类似于

$cmd = "mycommand --add \"condition LIKE '%TEXT%' \"";

此命令应该将“add”之后包含的字符串插入数据库。

问题是它在数据库中插入记录而没有%TEXT%周围的单引号,如下所示:

condition LIKE %TEXT%

如果我在命令提示符下执行命令,它会正确插入字符串。

如何格式化双引号和单引号以便正确插入数据库?

感谢您的帮助

2 个答案:

答案 0 :(得分:5)

通过将命令放在一个字符串中,您正在通过系统的shell进行处理。 (你没有提到它是cmd.exe还是bash或其他有趣的东西。)

建议:

  1. 将系统命令创建为字符串数组将避免shell重新插入命令行。 @cmd = ('mycommand', '--add', q(condition LIKE '%TEXT%'));

  2. 抛出额外的反斜杠以保护shell中的单引号。将echo添加到您的命令可能有助于调试....

  3. (我个人最喜欢的)不要为数据库访问做好准备。 use DBI

答案 1 :(得分:0)

$cmd = q{mycommand --add "condition LIKE '%TEXT%'"};

qq用于双引号,q用于单引号。

这样就可以实现整个命令。