我想知道如何将Perl文件导入脚本。我尝试使用,需要和做,但似乎没有什么对我有用。这就是我用require做的方式:
#!/usr/bin/perl
require {
(equations)
}
print "$x1\n";
是否可以编写代码将值(我在我的脚本中)替换为equations.pl
,然后让我的脚本使用equations.pl
中定义的等式来计算另一个值?我该怎么做?
答案 0 :(得分:5)
您可以要求.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目录的顶层。
答案 1 :(得分:3)
您无法导入文件。您可以执行文件并从中导入符号(变量和子)。请参阅perlmod中的Perl Modules。
答案 2 :(得分:2)
equations.pm file:
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
答案 3 :(得分:0)
您提供的关于equations.pl
的详细信息很少,但如果输入可以通过命令行参数给出,那么您可以open管道:
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