perl - perl中的单引号和双引号

标签 perl postgresql quotes double-quotes

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

操作系统命令的执行方式为 IPC::Open3 ,命令就像

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

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

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

condition LIKE %TEXT%

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

我应该如何格式化双引号和单引号,以便将其正确插入数据库中?

感谢您的帮助

最佳答案

通过将命令放入单个字符串中,您将使其通过系统的 shell。 (你没有提到它是 cmd.exe 还是 bash 或者其他有趣的东西。)

建议:

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

  2. 添加额外的反斜杠以保护 shell 中的单引号。在命令前添加 echo 可以帮助调试......

  3. (我个人最喜欢的)不要为数据库访问付费。 use DBI .

关于perl - perl中的单引号和双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15167071/

相关文章:

postgresql - 如何使用 Windows Batch 从文本文件中修剪/删除前导/左侧空格?

javascript - 正则表达式匹配所有不在引号内的实例

javascript - 捕获 SyntaxError 并运行替代函数

perl - 动态 ORM - Perl

java - 从 perl 调用 java 类

postgresql - Postgres GIN 索引性能下降

mysql - MySQL 中何时使用单引号、双引号和反引号

regex - 为什么这个正则表达式不贪心?

perl - 如何使用 Perl 解析证书签名请求?

postgresql - 什么 PostgreSQL 管理 GUI 界面支持 SSH 隧道?