Thread CSV-Datei ohne Modul schreiben (15 answers)
Opened by Stuermchen at 2011-07-12 09:07

rosti
 2011-07-12 11:08
#150314 #150314
User since
2011-03-19
3492 Artikel
BenutzerIn
[Homepage]
user image
Quote
Am liebsten wäre mir eine sehr einfach gehaltene Lösung.


Du bist auf dem Weg, Spaghetti-Code zu schreiben. Beim Coden allein mit dem [index] verlierst Du schnell die Übersicht, welche Du bekommen könntest, indem Du den Spalten Namen gibst.

Deine erste Zeile hat die Namen der Directories. dir1;dir2; usw. In einem Array wäre dir1 in [0], dir2 in [1] usw. Wie wäre es mit Namen? Guck mal:

Code (perl): (dl )
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
package Names;

###########################################################################
# Rolf Rost, 14.2.2011
# Anonyme Array-Elemente bekommen Namen
###########################################################################
use strict;

# Setzt ein Array in ein Objekt um
sub new{
        my $class = shift;
        my $maps  = shift; # {3 => 'Day', 4 => 'Month', 5 => 'Year'}
        my $aref  = shift; # p.e. from localtime, stat, etc.
        return if ref $maps ne 'HASH';
        return if ref $aref ne 'ARRAY';
        my $self  = {};
    for(my $i = 0; $i < scalar(@$aref); $i++){
       $self->{$maps->{$i}} = $aref->[$i] if exists $maps->{$i};
    }
    
    return bless $self, $class;
}
1; ########################################################################

#package main;
#my $ref = Names->new({3 => 'Day', 4 => 'Month', 5 => 'Year'}, [localtime]);
#printf qq(%s.%s.%s\n), $ref->{Day}, ++$ref->{Month}, $ref->{Year} + 1900;
#
#my $ff = Names->new({7 => 'Size'}, [stat('/tmp/numbers.bin')]);
#print "$ff->{Size}\n";



Zum Anderen hast Du die User. Die haben auch Namen. Ergo brauchst Du eine Datenstruktur entweder nach Benutzern oder nach Verzeichnisnamen. Ich denke, hier sollten wir ansetzen: Was muss Dein Code können und welche Datenstruktur passt am Besten.

View full thread CSV-Datei ohne Modul schreiben