将变量从perl脚本传递到tcl脚本

将变量从perl脚本传递到tcl脚本,perl,tcl,Perl,Tcl,我在perl脚本中定义了一个变量 如何使用与perl脚本所在目录相同的tcl脚本中定义的相同值访问同一变量您可以将其写入perl脚本中的配置文件,然后让tcl脚本从该配置文件中读取该值。您可以将其写入perl脚本,然后让tcl脚本从该配置文件中读取值。如果不知道perl和tcl程序之间的确切关系,就很难知道回答这个问题的最佳方法。传递值副本的最佳方式可能是将其作为另一个脚本调用的参数(这在两种语言中都很简单)或作为环境变量。或者,您可以将该值存储在共享文件中;将其存储在数据库中(例如,在SQLi

我在perl脚本中定义了一个变量


如何使用与perl脚本所在目录相同的tcl脚本中定义的相同值访问同一变量

您可以将其写入perl脚本中的配置文件,然后让tcl脚本从该配置文件中读取该值。

您可以将其写入perl脚本,然后让tcl脚本从该配置文件中读取值。

如果不知道perl和tcl程序之间的确切关系,就很难知道回答这个问题的最佳方法。传递值副本的最佳方式可能是将其作为另一个脚本调用的参数(这在两种语言中都很简单)或作为环境变量。或者,您可以将该值存储在共享文件中;将其存储在数据库中(例如,在SQLite中)实际上只是一个成熟的版本。或者你可以花点力气把两种语言嫁接在一起,这样两种语言就可以同时看到一个共同的价值。(这需要更多的努力。)

下面是两个简单的方法;如果它们看起来很像你,那是因为它们的反面是相同的图案

简单的方法:Perl→ Tcl 在Perl方面:

my$theResult=`tclsh script.tcl“$theArgument”`;
在Tcl端(在script.Tcl中):

简单的方法:Tcl→ Perl 在Tcl方面:

set theResult [exec perl script.pl $theArgument]
在Perl端(在script.pl中):

my$theArgument=$ARGV[0];
# .... 过程
打印“$result\n”;

如果不知道Perl和Tcl程序之间的确切关系,就很难知道回答这个问题的最佳方法。传递值副本的最佳方式可能是将其作为另一个脚本调用的参数(这在两种语言中都很简单)或作为环境变量。或者,您可以将该值存储在共享文件中;将其存储在数据库中(例如,在SQLite中)实际上只是一个成熟的版本。或者你可以花点力气把两种语言嫁接在一起,这样两种语言就可以同时看到一个共同的价值。(这需要更多的努力。)

下面是两个简单的方法;如果它们看起来很像你,那是因为它们的反面是相同的图案

简单的方法:Perl→ Tcl 在Perl方面:

my$theResult=`tclsh script.tcl“$theArgument”`;
在Tcl端(在script.Tcl中):

简单的方法:Tcl→ Perl 在Tcl方面:

set theResult [exec perl script.pl $theArgument]
在Perl端(在script.pl中):

my$theArgument=$ARGV[0];
# .... 过程
打印“$result\n”;

tcl脚本是从perl脚本开始的吗?tcl脚本是从perl脚本开始的吗?在perl->tcl示例中添加了一些引号:perl中backticks中的字符串由/bin/sh处理,因此您必须担心shell引用。另外,如果我真的认真对待它,我会考虑使用perl的低级fork/execve支持(这样做是为了避免穿越外壳和所有陷阱)。但这会带来更多的复杂性——或者说是一个我不知道的库——并成为我的中心点(一般相似性)不太清楚。在perl->tcl示例中添加了一些引号:perl中backticks中的字符串由/bin/sh处理,因此您必须担心shell引号。另外,如果我真的认真对待它,我会考虑使用perl的低级fork/execve支持(以避免在shell中出错及其所有陷阱).但这带来了更多的复杂性——或者说是一个我不知道的库——并成为我的中心观点(一般相似性)两种语言都可以读/写:perl使用YAML::Tiny,tcl使用tcllib中的YAML包。如果要共享的数据是更复杂的数据结构,这是一个很好的答案。YAML是一个很好的选择,两种语言都可以读/写:perl使用YAML::Tiny,tcl使用YAML包如果要共享的数据是更复杂的数据结构,那么这是一个很好的答案。