我想知道如何将 Perl 文件导入脚本。我尝试了使用、要求和执行,但似乎没有什么对我有用。这就是我使用 require 的方式:
#!/usr/bin/perl
require {
(equations)
}
print "$x1\n";
是否可以编写代码将一个值(我在我的脚本中得到)代入equations.pl
,然后让我的脚本使用定义的方程equations.pl
来计算另一个值?我该怎么做呢?
您可以 require 一个 .pl 文件,然后该文件将执行其中的代码,但为了访问变量,您需要一个包,并且“使用”而不是 require(简单的方法)或通过 Exporter。
http://perldoc.perl.org/perlmod.html
简单示例:这是您要导入的内容,将其命名为 Example.pm:
package Example;
our $X = 666;
1; # packages need to return true.
以下是如何使用它:
#!/usr/bin/perl -w
use strict;
use Example;
print $Example::X;
这假定 Example.pm 位于同一目录中,或者位于 @INC 目录的顶层。
equations.pm文件:
package equations;
sub add_numbers {
my @num = @_;
my $total = 0;
$total += $_ for @num;
$total;
}
1;
test.pl文件:
#!/usr/bin/perl -w
use strict;
use equations;
print equations::add_numbers(1, 2), "\n";
输出:
3
您不能导入文件。您可以执行文件并从中导入符号(变量和子项)。请参阅perlmod 中的Perl 模块。
您提供的关于equations.pl
的细节很少,但如果输入可以通过命令行参数给出,那么您可以打开一个管道:
use strict;
use warnings;
my $variable; #the variable that you will get from equations.pl
my $input=5; #the input into equations.pl
open (my $fh,"-|","perl equations.pl $input") or die $!;
while(my $output=<$fh>)
{
chomp($output); #remove trailing newline
$variable=$output;
}
if(defined($variable))
{
print "It worked! \$variable=$variable\n";
}
else
{
print "Nope, \$variable is still undefined...\n";
}
如果这是 的主体equations.pl
:
use strict;
use warnings;
my $foo=$ARGV[0];
$foo++;
print "$foo\n";
然后上面的代码输出:
It worked! $variable=6