【发布时间】:2014-04-30 00:06:09
【问题描述】:
我有三个不同的 Perl 程序。我想访问其他两个 Perl 程序中第一个程序中存在的变量的值。
我的第一个 Perl 程序如下所示:
#!/usr/bin/perl
print "Content-Type: text/html; charset=utf-8\n\n";
use CGI;
use Cwd;
use utf8;
$q=new CGI;
$a=$q->param('file');
#chomp($a);
my $ftpname="$a";
此程序从 HTML 程序的文本中获取值。我需要其他 Perl 程序中的 $ftpname 变量的值。我该怎么做?
【问题讨论】:
-
还有哪两个 Perl 程序?它们与这个有什么关系? (为什么不使用
strict和warnings?) -
这是错误的做事方式; Perl 有模块,模块通常使用
package语句为自己创建一个命名空间。并且脚本通过use或require调用这些模块的使用,此时模块的包变量变为可用。在大多数情况下访问模块的包变量仍然是一种不好的形式,但它比在某些不创建自己的命名空间的库上使用do filename.pl更好。 -
@Quentin 我认为其他程序的外观并不重要,他在问如何从另一个程序中读取一个程序中定义的变量的值。
-
@user3395299 我不认为你可以直接在程序之间进行交互,除非一个程序调用另一个程序。例如,如果该程序返回 $ftpname 的值,则在其他程序中,您可以将该程序用作函数,并将其结果存储在变量中。另一种方法是将 $ftpname 存储在临时文件中,并让其他程序读取该临时文件。
-
@AdiInbar — 这使得他们互动的方式非常相关。他们会向其他 CGI 程序发出 HTTP 请求吗?脱壳?解析源代码。