User since
2008-02-20
9
Artikel
BenutzerIn
Hallo Boardies,
für mein Perlscript habe ich ein config File spezifiziert, indem jeder User eine beliebige Anzahl an Zeilen definieren kann.
Jede Zeile hat einen bestimmten Aufbau:
Syntax: {B/K/M/G},<Größe in Bytes>,<Anzahl>,{READ/WRITE}
Jeder Wert wird mit einem Komma separiert. Das erste Zeichen einer Zeile gibt die Einheit der Dateigröße an:
B = Byte
K = KiloByte
M = MegaByte
G = GigaByte
Der zweite Wert gibt nun die Dateigröße der einzelnen Datei an (ganzzahliger Wert)
Die Anzahl der Dateien wird mit dem dritten Wert angegeben, während im letzten Wert definiert wird, ob vom Dateiserver gelesen werden soll (READ) oder Dateien auf eine Freigabe geschrieben werden sollen (WRITE).
Pro Zeile wird ein Test definiert. Es können beliebig viele Tests hinterlegt werden.
Jetzt habe schon herumgesucht, wie ich am besten so ein Suckriterium definiere, aber das scheint garnicht so einfach zu sein.
Ich möchte einfach sicherstellen, dass User durch Leerzeilen oder Kommentare, das Script in seiner Ausführung nicht funktionsuntüchtig machen.
Ich habe mal ein Beispiel gemacht:
Beispiel: Es sollen folgende Tests durchgeführt werden:
1000 x 1B Datei lesend
1000 x 1KB Datei lesend
1000 x 100KB Datei lesend
1000 x 1MB Datei lesend
10 x 100MB Datei lesend
1000 x 1B Datei schreibend
1000 x 1KB Datei schreibend
1000 x 100KB Datei schreibend
1000 x 1MB Datei schreibend
10 x 100MB Datei schreibend
config-Datei:
B,1,1000,READ
K,1,1000,READ
K,100,1000,READ
M,1,1000,READ
M,100,10,READ
B,1,1000,WRITE
K,1,1000,WRITE
K,100,1000,WRITE
M,1,1000,WRITE
M,100,10,WRITE
Bin für jeden Hinweis dankbar!
Schöne Grüße,
AndiS
User since
2003-08-04
14371
Artikel
ModeratorIn
Ich verstehe Dein Problem nicht so ganz. An welcher Stelle hast Du Probleme? Was meinst Du mit "Suchkriterium"? Wonach willst Du was suchen?
User since
2007-09-06
233
Artikel
BenutzerIn
Ich vermute mal, dass AndiS prüfen will, ob die jeweilige Zeile "gültig" ist, d.h. kein Kommentar, keine Leerzeile, usw. enthält.
Ich würde die Datei zeilenweise bearbeiten, jede Zeile aufsplitten und dann die einzelnen Werte überprüfen, ob sie nur gültige Zeichen enthält:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my $filename = 'config.txt';
open my $readh, '<', $filename or die "open(ro) $filename: $!\n";
while (my $zeile = <$readh>) {
$zeile =~ s|[\n\r\s]||g;
(my $art, my $groesse, my $anzahl, my $typ) = split(/,/, $zeile);
next if ($art !~ m|[BKMG]|);
next if ($groesse !~ m|^\d+$|);
next if ($anzahl !~ m|^\d+$|);
next if ($typ !~ m/^(READ)|(WRITE)$/);
... hier dann "Daten" bearbeiten ...
}
close $readh or die "close(ro) $filename: $!\n";
(ungetestet)
Gruß
Hagen