Thread Hash-Tree ausgabe CSV formatierung (5 answers)
Opened by Dakarus at 2013-12-18 12:09

clms
 2013-12-18 13:25
#172647 #172647
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2013-12-18T11:09:47 Dakarus
Code (perl): (dl )
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 Perldoc:perlfunc join ersetzen


Damit ergibt sich dann folgender ungetesteter Code
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
sub array_tree {
    my @vars   = @_;
    my $perent = shift @vars;
    while (@vars) {
       print '"$perent";"/'
          .join("/",@vars)
            ."\";\"\n";
        $perent .= "/" . shift(@vars);
    }
}

View full thread Hash-Tree ausgabe CSV formatierung