我遇到了单引号导致系统调用中Bash'未端接引号字符串'错误的情况。在这个特定的情况下,我试图将$DBI::errstr
插入到bash命令中。我正在使用系统调用:反斜杠在Perl中的单引号
system "echo '$DBI::errstr' | mail -s 'error' [email protected]";
因此$DBI::errstr
有时包含单引号并导致错误。我知道我可以将$DBI::errstr
放在反斜杠的双引号\"$DBI::errstr\"
中,并称它为一天,但是必须有更好的方式来处理带有正则表达式的引号或者编写一个子例程,这是我找不到的。我也试过quotemeta
,但是这也会反过来削减空间。
[字符串:: ShellQuote](https://metacpan.org/pod/String::ShellQuote)? – tobyink
您也可以切换到[Mail :: Sender](http://p3rl.org/Mail::Sender),因此您不必引用任何内容。 – choroba
'$ DBI :: errstr'的值是什么?它里面有单引号吗? – Oktalist