运行 perl 脚本中的 gam 命令

running gam command inside perl script

我是 perl 的新手,正在尝试 运行 下面的高级 gam 命令 在一个简单的 perl 脚本中 但无论我做什么,它都不会将输出打印到屏幕上使用 - 我做错了什么?

#!/usr/bin/perl

#exec ("ls -l");

chdir '/home/ted/bin/gamadv-xtd3';

#exec ("gam user ted.jones@co.com show contacts emailmatchpattern sarah.owens@co.com  fields email");
#system "gam user ted.jones@co.com show contacts emailmatchpattern sarah.owens@co.com  fields email";
exec ("gam user ted.jones@co.com show contacts emailmatchpattern sarah.owens@co.com fields email");

您应该始终以 use strict;use warnings; 开始您的程序。这将捕获并报告您的代码的许多问题。

对于这个特定的代码,可能只是字符串中 @co 的插值失败(导致 gam 命令失败)。或者可能是 gam 不在您的路径上,因此 exec 本身失败了。

以下代码片段演示了您应该如何在 perl 中使用 system() 调用。

请看:system, Quote and Quote-like Operators

use strict;
use warnings;

my $cmd  = $ENV{HOME} . '/bin/gamadv-xtd3';
my @args = qw/gam user ted.jones@co.com show contacts emailmatchpattern sarah.owens@co.com fields email/;

system($cdm,@args);