Очистить динамически созданный массив в модуле Perl - PullRequest
0 голосов
/ 22 июля 2011

Привет, ребята, нужна помощь в отношении модулей и очистки динамически созданного массива в другом модуле.

У меня есть 1 файл perl и 2 модуля perl (я его создал)

//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 
}

Этоэто пример 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;

Это пример XYZ.pm

//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}"после каждого вызова для (1..5) , поскольку $ eachelement остается одинаковым при каждом подсчете.Только значение данных, которые помещаются в push @ {$ eachelement) в модуле XYZ, изменяется в зависимости от значения (США, Великобритания, Китай, Индия, Франция).

Вопросдля группы есть ли способ очистить массив в модуле, имя которого создается динамически.Как, например, я хочу очистить @ {$ eachelement} в XYZ.pm после каждого выполнения цикла for.

Надеюсь, я его поместил вспособ, который можно понять.Если у кого-нибудь из вас есть лучшее решение или что-то еще, что я могу использовать, я готов это сделать.Отпишитесь, если вопрос или какая-либо часть кода не ясны.

PS: я не ищу небольшую ошибку или опечатку, это всего лишь пример кода.Я просто хочу знать, как это можно сделать.

Спасибо за заранее ожидаемую помощь.

1 Ответ

0 голосов
/ 30 июля 2011

Я оглянулся и нашел решение этой конкретной проблемы. Я определил глобальную функцию

sub clear
{
       for my $ref (values %MSQL::) 
    {
        @{$ref} = ();
    }
}

Спасибо, ребята, за поддержку.

@ Патрик, это не было ошибкой TYPO. Как я и сказал, я искал логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...