Thread Verzeichnispfade als Hash-Key (22 answers)
Opened by Jiep1963 at 2015-11-18 15:04

Raubtier
 2015-11-19 11:37
#182984 #182984
User since
2012-05-04
1054 Artikel
BenutzerIn

user image
Guest Achim Pabel
Und wenn ich Deine Aussage jetzt richtig verstehe "Perl ist nicht Shell." dann reicht also:

$MeinHash{ $PfadFileString } = $Md5SumString;

völlig aus, auch dann, wenn der Pfad oder der Dateiname einen Leerschritt enthält.

Ja, richtig.

Quote
> [hlubenow]: Raubtier hatte oben schon geschrieben, daß man Leerzeichen
> in Hash-Keys benutzen kann, wenn man nur Anführungszeichen um den
> String macht.

Demnach müsste ich dann doch wieder

$MeinHash{ "$PfadFileString" } = $Md5SumString;

verwenden.


Nein. Hlubenow hat richtig geschrieben "um den String". Wenn du also direkt einen String reinschreibst, brauchst du natürlich die Quotes. Wenn der String aber in einer Variablen ist, dann nicht.

Also:
Code (perl): (dl )
1
2
3
4
$hash{"irgendwas mit spaces"} = 0;
# oder:
my $key = "irgendwas mit spaces";
$hash{$key} = 0;


Du kannst auch "$key" verwenden, aber das bedeutet: erzeuge mir einen neuen String und setze in diesem neuen String dann die Variable entsprechend ein. Da kommt hier natürlich dasselbe heraus, aber es ist überflüssig, wenn man nicht extra einen neuen String will.

Quote
Mit meinem schlechten Englisch habe ich auf einer Perl-Seite verstanden, dass man einen Pfad als Hash-Key nicht nutzen soll, weil der zu lang ist.


Ich sehe kein Problem mit langen Pfaden als Keys.

Was du natürlich machen könntest, ist was anderes: wenn du die Dateien
/ganz_langer_Pfad/a.txt und /ganz_langer_Pfad/b.txt hast, könntest du natürlich einen Hash of Hashes machen: im "oberen" Hash speicherst du den Pfad und darunter dann ein Hash, in dem nur die Dateien sind. Aber erst Gedanken machen, wenn du Probleme bekommst.

View full thread Verzeichnispfade als Hash-Key