首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl脚本使用gpg还是CLI gpg?

Perl脚本使用gpg还是CLI gpg?
EN

Stack Overflow用户
提问于 2013-05-31 01:29:54
回答 1查看 1K关注 0票数 0

作为perl脚本的一部分,我正在根据从电子邮件中获得的周期数从网站下载一些文件。我使用regexp来找到合适的循环号,将其附加到一个url中,并从所述url中获取一个加密文件。然后,我将加密文件打印到一个临时文件,并使用gpg对该临时文件进行解密,将输出转储到另一个位置。干净得像泥一样?

这是事情变得有趣的地方。以下是用于解密临时文件的命令:

代码语言:javascript
复制
my $cmd = 'cat ~/.gpgkey | gpg --passphrase-fd 0 --no-tty --batch --quiet 
          --no-mdc-warning --decrypt $filename >> ~/SAT.SCR';

如果您注意到了,该命令使用了一个$filename变量。我已经单独确认这个变量指向了正确的文件。但是,此命令会产生以下错误:

代码语言:javascript
复制
gpg: decrypt_message failed: Unknown system error

但是,如果我直接从shell (csh)运行上面的命令,用实际的文件替换$filename,它就能完美地工作。我们使用的是gpg 2.0.9。

有人知道为什么从perl脚本调用而不是从shell调用时解密会失败吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-31 02:18:45

Perl不会用单引号插入字符串中的变量。尝试使用带双引号的字符串:

代码语言:javascript
复制
my $cmd = "cat ~/.gpgkey | gpg --passphrase-fd 0 --no-tty --batch --quiet 
      --no-mdc-warning --decrypt $filename >> ~/SAT.SCR";
system($cmd);

有关详细信息,请参阅Quote and Quote-like Operators in perlop

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16842447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档