Thread Projekt: Schülerverwaltung
(4 answers)
Opened by Chrischi at 2008-02-21 22:41
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! |