Schrift
[thread]11355[/thread]

Komplizierterer Suchstring

Leser: 1


<< >> 3 Einträge, 1 Seite
AndiS
 2008-02-25 10:12
#106322 #106322
User since
2008-02-20
9 Artikel
BenutzerIn
[default_avatar]
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
renee
 2008-02-25 10:36
#106323 #106323
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich verstehe Dein Problem nicht so ganz. An welcher Stelle hast Du Probleme? Was meinst Du mit "Suchkriterium"? Wonach willst Du was suchen?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Hagen
 2008-02-25 11:06
#106324 #106324
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
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:

Code (perl): (dl )
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>) {
        # zur Sicherheit Zeilenumbrüche und Leerzeichen entfernen
        $zeile =~ s|[\n\r\s]||g;

        (my $art, my $groesse, my $anzahl, my $typ) = split(/,/, $zeile);
        
        next if ($art !~ m|[BKMG]|); # nächste Zeile bearbeiten, falls in $art etwas anderes als B, K, M, G steht
        next if ($groesse !~ m|^\d+$|); # nächste Zeile bearbeiten, falls in $groesse etwas anderes als eine Zahl steht
        next if ($anzahl !~ m|^\d+$|); # nächste Zeile bearbeiten, falls in $anzahl etwas anderes als eine Zahl steht
        next if ($typ !~ m/^(READ)|(WRITE)$/); # nächste Zeile bearbeiten, falls in $typ etwas anderes als READ oder WRITE steht

        # Prüfung erfolgreich
        ... hier dann "Daten" bearbeiten ...
        } # while
close $readh or die "close(ro) $filename: $!\n";


(ungetestet)
Gruß
Hagen
<< >> 3 Einträge, 1 Seite



View all threads created 2008-02-25 10:12.