3

我想知道如何将 Perl 文件导入脚本。我尝试了使用、要求和执行,但似乎没有什么对我有用。这就是我使用 require 的方式:

#!/usr/bin/perl

require {
 (equations)
}

print "$x1\n";

是否可以编写代码将一个值(我在我的脚本中得到)代入equations.pl,然后让我的脚本使用定义的方程equations.pl来计算另一个值?我该怎么做呢?

4

4 回答 4

6

您可以 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 目录的顶层。

于 2012-04-17T18:43:58.013 回答
3

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
于 2012-04-17T18:53:36.850 回答
3

您不能导入文件。您可以执行文件并从中导入符号(变量和子项)。请参阅perlmod 中的Perl 模块

于 2012-04-17T20:08:37.527 回答
0

您提供的关于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
于 2012-04-17T18:32:23.950 回答