У меня есть следующая подпрограмма, которую я должен передать подпрограмму как hashtable, и эта хэш-таблица должна быть снова вызвана внутри другой подпрограммы с использованием perl?Как передать всю функцию подпрограммы в хэш-таблицу с использованием perl?
входной файл (из командной bdata Linux):
NAME PEND RUN SUSP JLIM JLIMR RATE HAPPY
achandra 0 48 0 2000 50:2000 151217 100%
agutta 1 5 0 100 50:100 16561 83%
Моя подпрограммой:
sub g_usrs_data()
{
my($lines) = @_;
my $header_found = 0;
my @headers =();
my $row_count = 0;
my %table_data =();
my %row_data =();
$lines=`bdata`;
#print $lines;
foreach (split("\n",$lines)) {
if (/NAME\s*PEND/) {
$header_found = 1;
@headers =split;
}
elsif (/^\s*$/)
{
$header_found=0;
}
$row_data{$row_count++} = $_;
#print $_;
}
Мой запрос:
Как я могу передать свою подпрограмму, как хеш в другую подпрограмму?
пример: g_usrs_data() -> это моя подпрограмма.
выше функции подпрограммы должны быть переданы в другую функцию подпрограммы (т.е. в usrs_hash в качестве хэш-таблицы)
пример: create_db (usrs_hash, $ sql1m)
Что вы подразумеваете под «_pass my subroutine ** as hash ** _"? Вы можете передать подпрограмму как coderef, но что такое «_as hash_»? Кроме того, вы показываете «g_usrs_data», но затем в «_example_» используйте 'usrs_hash' и' create_db'? Что означает ', $ sql1m'? «_example_» полностью неясен, а не правильный код. Вы можете уточнить? – zdim
Я хочу передать ту же функцию подпрограммы (i.e g_usrs_data) в другую подпрограмму с другим именем (i.e usrs_hash) с использованием хэшей. @ Zdim –
OK ... что вы подразумеваете под «_using hashes_»? Вы можете передавать подпрограммы с помощью _code reference_, который, как и любая ссылка, является скаляром. Я не понимаю, какие хеши имеют отношение к этому. (Вы _can_, чтобы эта ссылка на код была значением хэш-пары, если это то, что вы имеете в виду.) – zdim