%files_data = {
'./GetOpt.pm' => {
'pid' => {
'56061' => 1,
'56065' => 1
}
},
'file1' => {
'pid' => {
'56061' => 2
}
},
'file2' => {
'pid' => {
'56065' => 2
}
},
'./src/bin/perl' => {
'pid' => {
'56061' => 1,
'56065' => 1
}
}
};
%process_data = (
'56061' => {
'parent' => 'NA',
'name' => 'file1'
},
'56069' => {
'parent' => '56065',
'name' => 'echo Hello_file1'
},
'56062' => {
'parent' => '56061',
'name' => 'echo Hello_file2'
},
'56065' => {
'parent' => '56061',
'name' => 'file2'
}
);
Я бы хотел перебрать хеш $files_data
и для каждого файла получить цепочку файлов.
Поэтому я получу следующий хеш:
%hash = (
'file1' => {
'/src/bin/perl' => 1,
'file2' => {
'/src/bin/perl' => 1,
'./GetOpt.pm' => 1
},
'./GetOpt.pm' => 1,
}
);
Мне нужно пройти цепочку pid до основного родителя ('NA') для каждого файла.
Каким будет самый эффективный способ ее решения? Мне нужно несколько советов о том, как это сделать.
РЕДАКТИРОВАТЬ : Возьмем, к примеру, './GetOpt.pm'
файл. у него есть pid 56061
, поэтому мы идем к %process_data
и видим 'file1'
(который является файлом). Также мы видим, что родительский элемент 56061
равен NA
, поэтому мы останавливаемся и получаем:
file1 => ./GetOpt.pm
Но у ./GetOpt.pm
есть другой pid - 56065
, поэтому мы переходим к 56065
и видим file2
(который является файлом). Затем мы переходим к 56061
, который имеет file1
(это файл s). итак получаем:
file1 => file2 => ./GetOpt.pm
Объедините это:
file1 => {
./GetOpt.pm,
file2 => ./GetOpt.pm
}
Я хотел бы построить цепочку файлов процесса (только с файлами). %files_data
содержит действительные файлы, а %process_data
содержит иерархию процесса, которому мы должны следовать