Ich habe eine config.file, um einige Tests zu machen, und ich möchte auch einige Werte von diesem bekommen.Wie man einige Werte mit einer Schleife von Hashes von Hashes in Perl bekommt
Hier mein config.file:
my $folder = 'E:\FOLDER\Test\WEB';
{
license => [ 'kit-licence.zip',
'kit-work.zip'
],
programs => [
#template society =>\%program_work
'VIKTOR DESCRIPTION PRODUCT' => {
name => 'VIKTOR ',
parameters => [
Count_id => '06 (Viktor)',
Birth_date => '1995-04-30',
Marriage_date => '2014-05-26',
Divorce_date => '2015-03-30',
Activities_folder => $folder.'\VIKTOR\independent worker',
Activities_format => 'Enterprise Format (V35)',
Description_File_from => $folder.'\VIKTOR\FILE\description.xlm',
]
},
'OLIVER NEW OBJECT' => {
name => 'OLIVER ',
parameters => [
Count_id => '06 (oliver)',
Birth_date => '1990-04-30',
Marriage_date => '2011-03-26',
Divorce_date => '2014-01-30',
Activities_folder => $folder.'\OLIVER\independent worker',
Activities_format => 'Enterprise Format (V35)',
Description_File_from => $folder.'\OLIVER\FILE\description.xlm',
]
},
]
};
Meine Datei Test folgt:
#test.pl
use Modern::Perl;
my $config = do 'work.conf';
use Data::Dumper;
say Dumper($config);
Um Parameter in Programme für Viktor zum Beispiel, ich kann dies tun:
%programs = @{ $config->{programs} };
for my $prog (values %programs) {
my %param = @{ $prog->{parameters} };
for my $name (sort keys %param){
print $name, ': ', $param{$name},"\n";
}
}
Aber in meinem Fall möchte ich Parameter für jeden Benutzer erhalten können. Hier ist es nur für Viktor. Ich möchte sie für Oliver oder für einen anderen Benutzer bekommen. Dafür und um alle Benutzer zu unterscheiden, muss ich die "template society" verwenden, mit der sich jeder Benutzer unterscheidet. Zum Beispiel für Viktor: "VIKTOR DESCRIPTION PRODUCT". Für Oliver: "OLIVER NEUES OBJEKT".
Wie kann ich das tun?
Das Gleiche gilt für „Lizenz“:
license => [ 'kit-licence.zip',
'kit-work.zip'
],
programs => [..
würde Ich mag die Lizenz nach Name eines jeden bekommen. Zum Beispiel "kit-license.zip".
und nicht durch „harte Codierung“ wie folgt aus:
use File::Spec::Functions qw/catfile/;
my $filename = catfile($::svn, ${$config->{license}}[0]);
my $filename1 = catfile($::svn, ${$config->{license}}[1]);
Vielleicht in einer Schleife, aber ich finde nicht.
PS: Frag mich nicht, warum sie alle geschieden sind. Ich weiß es wirklich nicht.
Ich würde nicht über den geschiedenen Status fragt sich, sondern vielmehr darüber, warum diese Datenstruktur ist so seltsam. – simbabque