2012-04-17 11 views
-1

私はPerlファイルをスクリプトにインポートする方法を知りました。私は、使用、必要とすることを実験したが、何も私のために働くようです。.plファイルをインポートする

#!/usr/bin/perl 

require { 
(equations) 
} 

print "$x1\n"; 

は、それはその後、私のスクリプトが別の値を計算するequations.plで定義された式を使用している、equations.plに(私は私のスクリプトで取得)の値を代入するためにコーディングすることは可能です:これは、私はそれをやったか必要でしょうか?これはどうすればいいですか?これは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"; 
} 

:入力はコマンドライン引数を介して与えられることができるかどう

+0

'equations.pl'は指定されていますか、または内容を変更できますか?あなたがそれを変更することができれば、式を['sub'](http://perldoc.perl.org/perlsub.html)に入れて、他の関数と同じように呼び出すのはどうですか? – vstm

+4

私はあなたが期待している種類の値と方程式の例と、その方程式が別々のファイルにある必要がある理由の例を挙げる必要があると思います。 'equations.pl'のように、メインプログラムで呼び出してパラメータとして値を渡すことができるサブルーチンを定義する必要があります。 – Borodin

+0

equations.plには28個の方程式があり、スクリプトを見るときに自分自身をうまく保つためにそこに定義しました。だから問題は、私は2つの変数の値を決定するためにいくつかのループを使用している、私はequations.plに取得し、equations.plの別の値を取得する値を置換したいと思います。 – Nina

答えて

0

あなたはopen、その後、パイプをすることができますequations.plについて非常にいくつかの詳細を与えられたが、き

そして
use strict; 
use warnings; 

my $foo=$ARGV[0]; 
$foo++; 
print "$foo\n"; 

出力上記コード:

It worked! $variable=6 
+0

それはハッキーです。 –

+0

OPの不思議な 'equations.pl'ファイルと同じくらいハッキーです。 * nix pipeも "ハッキー"と呼ぶでしょうか? –

+0

いいえ、もちろんありません。彼らは素晴らしいツールですが、ここで間違ったツールと思われます。私は他の答えがより良いアプローチに道を示すと思います。 –

2

.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; 

これは例を想定しています.pmは同じディレクトリ、または@INCディレクトリの最上位にあります。

1

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 
2

ファイルをインポートすることはできません。ファイルを実行してシンボル(変数とサブ)をインポートできます。 perlmodのPerl Modulesを参照してください。

関連する問題