作为 perl 脚本的一部分,我正在根据从电子邮件中获得的周期数从网站下载一些文件。我使用正则表达式来查找适当的循环编号,将其附加到 url 并从所述 url 中获取加密文件。然后我将加密文件打印到临时文件,并使用 gpg 解密该临时文件,将输出转储到另一个位置。清如泥?
这就是事情变得有趣的地方。这是用于解密临时文件的命令:
my $cmd = 'cat ~/.gpgkey | gpg --passphrase-fd 0 --no-tty --batch --quiet
--no-mdc-warning --decrypt $filename >> ~/SAT.SCR';
如果您注意到,该命令使用 $filename 变量。我已经单独确认此变量指向正确的文件。但是,此命令会产生以下错误:
gpg: decrypt_message failed: Unknown system error
但是,如果我直接从 shell (csh) 运行上述命令,将 $filename 替换为实际文件,则它可以完美运行。我们正在使用 gpg 2.0.9。
有谁知道为什么从 perl 脚本调用而不是从 shell 调用解密失败?