Thread Projekt: Schülerverwaltung (4 answers)
Opened by Chrischi at 2008-02-21 22:41

Linuxer
 2008-02-21 23:24
#106204 #106204
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
Hi,

hier ein Schnellschuß, basierend auf der Idee von n4cer aus dem Perlboard (wo ich diesen Vorschlag auch noch posten werde)...


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/perl
# vi: set ts=4 sw=4 sts=2 et:
use strict;
use warnings;

# Author:   linuxer
# Date:      21. February 2008

# Description:
#   einfache schueler verwaltung
#
# http://board.perl-community.de/thread/11343/#MSG0
# http://www.perlboard.de/cgi-bin/perlboard.pl?action=show_topic&id=9567&ant=2

#> global variables (the less you use, the better the script)
#> --------------------------------------------------------------------------

our $VERSION = '0.01';

my $datafile = 'daten.txt';

#> sub routines
#> --------------------------------------------------------------------------

# define any used sub routine before main()


# Subroutine: lese Daten aus Datei und liefere Daten in einem Hash-of-Hash zurueck
sub read_data_to_hash {
    my $filename = shift;
    my %schueler = ();

    # 3-argument-open ist sicherer; $! enthaelt die Systemfehlermeldung
    open my $readh, '<', $filename or die "open(ro) $filename: $!\n";

    # zeilenweise lesen
    while ( my $line = <$readh> ) {
        # am Tab splitten; nur in 3 Felder splitten
        my ($name, $ort, $note ) = split /\t/, $line, 3;

        # in hash eintragen
        $schueler{$name} = {
            'ort'  => $ort,
            'note' => $note,
        };
    }

    close $readh or die "close(ro) $filename: $!\n";

    return %schueler;
}

#> main script
#> --------------------------------------------------------------------------

# neu einzutragender schueler... (sollte optimiert werden)
my $name = 'Fritz';
my $ort  = 'Musterhausen';
my $note = 2;

# datei auslesen und Hash %schueler fuellen
my %schueler = read_data_to_hash( $datafile );

# wenn wir den Schueler $name noch nicht kennen,
# dann haengen wir die Daten ans Dateiende
if ( !exists $schueler{$name} ) {

    # schreiben daten ans Dateiende
    open my $writeh, '>>', $datafile or die "open(wr) $datafile: $!\n";
    printf {$writeh} "%s\t%s\t%s\n", $name, $ort, $note
        or die "print to $datafile: $!\n";
    close $writeh or die "close(wr) $datafile: $!\n";
}
#

__END__
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Projekt: Schülerverwaltung