2013-12-18T11:09:47
Dakarus
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sub array_tree {
my @vars = @_;
my $peon = scalar @vars;
my $perent = shift @vars;
while ( $peon > 0 ) {
foreach my $sequence (@vars) {
print "\"$perent\";";
print '"';
foreach (@vars) {
print "/$_";
}
print '";"' . "\n";
$perent = "$perent" . "/" . shift(@vars);
$peon = scalar @vars;
}
}
return 1;
}
Das zwar ist nicht Deine eigentliche Frage, aber die Funktion hat erhebliches Verbesserungspotential:
- $peon ist überflüssig. Du kannst gleich @vars nehmen. In skalarem Kontext liefert das die Anzahl der Elemente im Array.
- Du hast zwei äußere Schleifen, brauchst aber nur eine. $sequence wird nie verwendet.
- was soll das return 1?
- das innere print "/$_" foreach @vars; lässt sich eleganter durch perlfunc join ersetzen
Damit ergibt sich dann folgender ungetesteter Code
sub array_tree {
my @vars = @_;
my $perent = shift @vars;
while (@vars) {
print '"$perent";"/'
.join("/",@vars)
."\";\"\n";
$perent .= "/" . shift(@vars);
}
}