我可以通过将数组作为参数传递来从Perl调用Expect脚本吗?

我可以通过将数组作为参数传递来从Perl调用Expect脚本吗?,perl,expect,Perl,Expect,是否可以通过将数组作为参数传递来从Perl调用Expect脚本? 如果是,如何在Expect中检索该数组,就像检索非数组数据一样: set value [lindex $argv 0] 我假设您谈论的是一个Perl数组,它在Tcl中被称为列表。来自Perl: system 'myscript.exp', @ary; 然后,您的Expect脚本将具有: set list_of_arguments $argv 我假设您谈论的是一个Perl数组,它在Tcl中被称为列表。来自Perl: syste

是否可以通过将数组作为参数传递来从Perl调用Expect脚本? 如果是,如何在Expect中检索该数组,就像检索非数组数据一样:

set value [lindex $argv 0]

我假设您谈论的是一个Perl数组,它在Tcl中被称为列表。来自Perl:

system 'myscript.exp', @ary;
然后,您的Expect脚本将具有:

set list_of_arguments $argv

我假设您谈论的是一个Perl数组,它在Tcl中被称为列表。来自Perl:

system 'myscript.exp', @ary;
然后,您的Expect脚本将具有:

set list_of_arguments $argv

格伦,我想知道Saranyya是否会理解你的答案。我会提供一些可能对他有帮助的背景知识

首先,Saranyya,请注意,您可以选择各种不同的Perl和Expect组合。如果现有的Expect脚本做了一些您想要增强的事情,那么您只需在Expect中编写功能代码,而不是在Perl中编写功能代码,就可以做得很好;Expect是一种完全通用的语言,基本上可以完成Perl所做的一切

相反,如果您有一个需要Expect功能的Perl应用程序,那么几乎可以肯定地使用Expect.pm用Perl编写所需的所有内容;不需要构建单独的Expect流程

最后,做您似乎描述的以及Glenn认为您所追求的事情也是合理的:从Perl调用独立的Expect进程。如果您这样做,并且如Glenn所描述的,如果您的Perl程序包括

system 'myscript.exp', @ary;
然后,Expect脚本访问通过$::argv值传递给它的参数,该值是一个列表。我将详细说明这个示例:假设您通过系统传递一个主机名列表;那么,在预期中,你可能会有用

set list_of_hostnames $::argv
foreach hostname $list_of_hostnames {
    do_something_valuable $hostname
}

从一个进程到另一个进程的接口传递值,而不是变量。当信息到达Expect时,它“不知道”它是Perl中的一个数组(例如)。您使用相同的技术来取消引用$::argv,但是您在Perl端打包了东西。

Glenn,我想知道Saranyya是否会理解您的答案。我会提供一些可能对他有帮助的背景知识

首先,Saranyya,请注意,您可以选择各种不同的Perl和Expect组合。如果现有的Expect脚本做了一些您想要增强的事情,那么您只需在Expect中编写功能代码,而不是在Perl中编写功能代码,就可以做得很好;Expect是一种完全通用的语言,基本上可以完成Perl所做的一切

相反,如果您有一个需要Expect功能的Perl应用程序,那么几乎可以肯定地使用Expect.pm用Perl编写所需的所有内容;不需要构建单独的Expect流程

最后,做您似乎描述的以及Glenn认为您所追求的事情也是合理的:从Perl调用独立的Expect进程。如果您这样做,并且如Glenn所描述的,如果您的Perl程序包括

system 'myscript.exp', @ary;
然后,Expect脚本访问通过$::argv值传递给它的参数,该值是一个列表。我将详细说明这个示例:假设您通过系统传递一个主机名列表;那么,在预期中,你可能会有用

set list_of_hostnames $::argv
foreach hostname $list_of_hostnames {
    do_something_valuable $hostname
}

从一个进程到另一个进程的接口传递值,而不是变量。当信息到达Expect时,它“不知道”它是Perl中的一个数组(例如)。您使用相同的技术取消对$::argv的引用,但是您在Perl端打包了东西。

我改变了主意。经过进一步思考,我认为格伦的答案可能比我的答案更符合萨拉尼亚的需要。不过,也许后者是对前者的有益补充。我改变了主意。经过进一步思考,我认为格伦的答案可能比我的答案更符合萨拉尼亚的需要。不过,或许后者是对前者的有益补充。