5 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
my (%network, %NOA);
use Class::Struct;
struct Node => {
score => '$',
strange => '@',
};
# network hash mit key P0, value=Node
my $key = "P0";
my $first = Node->new();
$first->score(0.9);
$network{$key} = $first;
# der hash mit dem Wert, den nur eine Kopie von %network erhalten soll
$NOA{$key}=0.22;
#Kopie von %network erhält neuen score (von NOA)
our $refnet = scoren(\%NOA, \%network);
sub scoren{
my ($refmap, $refnet) = @_;
my %q_map = %$refmap; my %network2 = %$refnet;
while (my ($key, $value) = each(%q_map)) {
$network2{$key}->score($value);
}
return(\%network2);
}
foreach (keys %network){
$dia = $network{$_}->score;
print "$_ = $dia \n";
}
Quotein scoren() in der while-Schleife eine neue Node für alle keys aus der q_map
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/perl
use strict; use warnings;
my (%network, %NOA);
use Class::Struct;
struct Node => {
score => '$',
neighbor => '@',
};
# network hash mit key P0, value=Node
my $key = "P0";
my $first = Node->new();
$first->score(0.9);
$first->neighbor(['P1', 'P2', 'P3']);
$network{$key} = $first;
# der hash mit dem Wert, den nur eine Kopie von %network erhalten soll
$NOA{$key}=0.22;
#Kopie von %network erhält neuen score (von NOA)
our $refnet = scoren(\%NOA, \%network);
our %new_network = %$refnet;
# Gebe P0 zusätlichen Nachbar
push @{$new_network{$key}->neighbor}, 'P4';
sub scoren{
my ($refmap, $refnet) = @_;
my %q_map = %$refmap; my %network = %$refnet;
my %network2;
while (my ($key, $value) = each(%q_map)) {
$network2{$key} = Node->new();
$network2{$key}->score($value);
# Nachbarn kopieren:
my @hold = @{$network{$key}->neighbor};
$network2{$key}->neighbor(\@hold);
}
return(\%network2);
}
# das Ganze ausgeben
foreach (keys %network){
print "Our old network:\n";
my $dia = $network{$_}->score;
print "$_ = $dia neighbors: @{$network{$key}->neighbor}\n\n";
print "The new network:\n";
$dia = $new_network{$_}->score;
print "$_ = $dia neighbors: @{$new_network{$key}->neighbor}\n";
}
5 Einträge, 1 Seite |