3

Perl ファイルをスクリプトにインポートする方法を考えていました。use、require、および do を試してみましたが、何もうまくいかないようです。これは私がrequireでそれをした方法です:

#!/usr/bin/perl

require {
 (equations)
}

print "$x1\n";

値 (スクリプトで取得したもの) を に代入するようにコーディングしてから、equations.plスクリプトで で定義された式を使用してequations.pl別の値を計算することは可能ですか? どうすればいいですか?

4

4 に答える 4

6

その中のコードを実行する .pl ファイルを require することができますが、変数にアクセスするにはパッケージが必要で、require の代わりに (簡単な方法) または Exporter 経由で "use" する必要があります。

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 に答える