こんにちは、みんなはモジュールに関して助けを必要とし、別のモジュールで動的に作成された配列を空にします。Perlモジュール内で動的に作成された配列を空にします。
Iこれは、これはXYZ.pmの一例であるABC.pm
//ABC.pm
package ABC;
our @mainArray;
sub fetchData
{
// connect to database and fill up the @mainArray;
@mainArray = qw/a b c d e f/;
}
1;
の一例である
//file.pl
use ABC;
use XYZ;
for(qw/US UK China India France/)
{
ABC::fetchData // This will create array varialbes
XYZ::calculateYield
// This will use arrays dynamically created from fetchData
// At this point, when i return I want a new copy of the array used in XYZ.pm's calculateYield function
}
(私が作成した)1つのPerlファイルを有し、2つのPerlモジュール
//XYZ.pm
package XYZ;
sub calculateYield
{
foreach my $eachelement (@ABC::mainArray)
{
push @{$eachelement), "some_data_that_changes_every_time_from India, UK, US, France or China";
}
}
さて、問題はここにあり、私は{$のeachelement} 012 @配列 "を空にしたいです(1..5)の場合、のすべてのコールの後に、「」と表示されます。$ eachelementは、すべてのカウントで同じままです。値(US、UK、China、India、France)に応じて、XYZモジュールの@($ eachelement)にプッシュされたデータの値のみが変更されます。
グループの質問は、名前が動的に作成されたモジュールの配列を空にする方法ですか?たとえば、forループが実行されるたびに、 @ {$ eachelement}をXYZ.pmでクリアします。
希望私は理解できる方法でそれを入れました。あなたがもっと良い解決策を持っているか、私が使うことができるものがあれば、それをやりたいです。質問やコードの一部が明確でない場合は、私にpingを送り返してください。
PS:小さなエラーやタイプミスを探しているわけではありません。これは単なるサンプルコードです。私は、物事をどのように行うことができるか知りたいだけです。
大変お手伝いいただきありがとうございます。
"use strictures;'で少なくともコンパイルして実行するコードを提供してください。あなたが望むものすべてをやっていない場合や、間違った結果を出す場合もあります。そうすることで、質問を意味のある方法で回答する機会が大幅に増えます。 - さまざまな構文エラーを修正すると、コードは '' ARRAY ref ... 'として文字列( "a")を使用できません。 - できるだけ早く、他のモジュールのメンバーデータへのアクセスを分離する必要があります。http://stackoverflow.com/questions/3109672/how-to-make-a-hash-available-in-another-module/のコード例を参照してください。 3110097#3110097 – daxim
あなたはperlのコメントインジケータが '#'ではなく '/'ですか? –