Thread Archive::RAR...: treibt mich in den Wahnsinn! (27 answers)
Opened by zipster at 2005-02-15 18:11

Dubu
 2005-02-23 10:41
#51765 #51765
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=zipster,23.02.2005, 08:04]
Man merkt wohl ganz stark an dem Code das ich eigentlich noch ein blutiger Anfänger bin ;)
[/quote]
Na, dafuer ist es schon mal nicht schlecht. :)

Quote
Code: (dl )
1
2
3
4
5
...
if (/^\s*(\w+)\s*=\s*(.*)/) {
      $Config{$1} = $2;
  }
...


Was passiert da genau? Ich verstehs noch nicht so ganz.

Die Regexp bedeutet folgendes:
Anfang der Zeile, gefolgt von beliebig vielen (inkl. gar keinen) Leerzeichen oder Tabs, zusammen kurz Whitespace, gefolgt von einer Folge von Wortzeichen (A-Z, a-z, 0-9 oder _), die ich mir mit den runden Klammern drumherum merke. Dies wiederum gefolgt von beliebig Whitespace, dann einem Gleichheitszeichen, dann wieder beliebig Whitespace, dann eine beliebige Zeichenfolge, die auch leer sein kann.

Quote
Wie müßte da meine InI Datei aussehen?
So ungefähr?
Code: (dl )
1
2
3
4
5
#Programmpfad
C:\tools\client
#Backuppfad
Z:\Installs
...

Nein, sie muesste eigentlich wie vorher aussehen, nur
- kann sie Kommentare enthalten; die muessen nur am
  Zeilenanfang mit '#' beginnen
- koennen am Anfang der Zeile und um das Gleichheitszeichen
  herum Leerzeichen oder Tabs stehen.

Deine Ini-Datei koennte also so aussehen:
Code: (dl )
1
2
3
4
5
# Hier kommt der Pfad zu den Programmen:
programmpfad = C:\tools\client
# Dies ist der Pfad zu den Backups
backuppfad = Z:\Installs
# etc. ...


Quote
Ist das
Code: (dl )
1
2
3
...
$datei_pfad =~ tr~/~\\~;
...

das selbe wie das?
Code: (dl )
1
2
3
...
$datei_pfad=~ tr/\//\\/;
...


Wenn ja warum machst du da "~" hin? Was haben die da für ne Wirkung?

Die Such- und Ersetzungoperatoren m//, s/// und tr/// koennen fast beliebige andere Begrenzer haben als den Schraegstrich (/). In dem Fall oben finde ich es besser, keinen Schraegstrich als Begrenzer zu benutzen, weil er schon im Suchteil vorkommt und dort dann mit \ escaped werden muss. Mit der Tilde als Begrenzer sieht es IMHO etwas uebersichtlicher aus, das ist alles.

Man kann auch Klammern als Begrenzer nehmen, das ist manchmal auch besser verstaendlich.

Folgende Konstruktionen sind von der Funktion her alle gleich:
Code: (dl )
1
2
3
4
5
6
tr/\//\\/
tr~/~\\~
tr!/!\\!
tr./.\\.
tr{/}{\\}
tr(/)(\\)

Siehe dazu perlop, Abschnitt "Quote and Quote-like Operators".

Quote
Code: (dl )
push @safe_datei, qq{"$datei_pfad"};


qq?
Bedeutet das das er alles was in der {} steht genau so in das array schiebt?

In Perl kann man zum Quoten von Text nicht nur '' und "" benutzen, sondern auch die Operatoren q{} und qq{}, wobei der erste wie einfache Anfuehrungszeichen wirkt und der zweite wie doppelte. Fuer die Begrenzer (hier die geschwungenen Klammern) gilt das Gleiche wie bei tr/// oben: Man kann fast alles dafuer einsetzen.

Folgende Ausdruecke sind also alle gleich:
Code: (dl )
1
2
3
"Hallo, \"Welt\"!"
qq{Hallo, "Welt"!}
qq~Hallo, "Welt"~

Je nachdem, welches Zeichen garantiert nicht im Text vorkommt, kann man einen anderen Begrenzer waehlen.

Quote
Code: (dl )
if (/^pre_rar\d+\.rar$/) ... # Vorne pre_rar, gefolgt von einer Zahl, gefolgt von .rar am Ende


Wie müßte das ausehen wenn die Datei "pre_rar1.part001.rar" heißt? Wobei ich nicht weiß wieviel Parts es gibt.
Wäre das richtig?
Code: (dl )
if (/^pre_rar\d+\.part\d+\.rar$/)

Ja, gut!

Quote
Quote
Das sieht grauslich aus, vor allem wenn man sieht, wie schoen du das in den Routinen time() und date() geloest hast. Warum nimmst du hier "scalar localtime (...)", statt gleich mit dem Array zu arbeiten und mit sprintf(), wie unten?


Weil ich mir diese 2 Routinen aus einem anderen Code geliehen habe. Ehrlich gesagt habe ich aber keine Ahung wie genau das funktioniert... :)

[/quote]
Schau dir mal perldoc -f localtime an. Die Funktion localtime() liefert naemlich im Arraykontext eine Liste von einzelnen Werten fuer Datum und Uhrzeit. Im skalaren Kontext (den du oben mit "scalar" erzwungen hast) bekommt man dagegen einen String mit formatiertem Datum und Uhrzeit.

So, ich muss jetzt leider weg.  Hoffe geholfen zu haben. :)

View full thread Archive::RAR...: treibt mich in den Wahnsinn!