Perl und seine Globs#
Artikel auf Anregung von JensKapitza und der DULUG.
Bitte verbessern, wenn ich hier Mumpitz® schreibe --MarkusMonderkamp
Der Begriff glob (global operator) ist in Perl doppelt belegt, sozusagen ein Teekesselchen.
Bitte verbessern, wenn ich hier Mumpitz® schreibe --MarkusMonderkamp
1. Es gibt den fileglob, mit dem das Skript ein array von Dateien zurückliefert, die den in dem Globpattern aufgeführten Text enthalten:#
@dateien = glob("kommendeLottozahl*");
... liefert z.B. die Dateien kommendeLottozahl.xls, kommendeLottozahlen.xls und kommendeLottozahlfalschvorhersageSchadenersatz.odf
anderes Beispiel:
~/src/pl> perl -le'print foreach glob "kiki*"' kiki1.txt kiki2.txt kikiunendlich.txtnäheres unter: perldoc -f glob im Manual
2. Dann gibt es den typeglob: #
Perl besitzt noch mehr Variablentypen, wie z.B. Hash, handle, typeglob, und alle besitzen zur Unterscheidung auch so ein lustiges kleines Zeichen davor. Hier eine kleine Liste aller lustigen Zeichen, mit denen man sich noch beschäftigen kann.
Typ | Zeichen | Beispiel | Ist ein Name für: |
---|---|---|---|
Skalar | $ | $bsp | Ein individueller Wert (Zahl oder String) |
Array | @ | @test | Eine Liste von Werten mit einer Ganzahl als Index |
Hash | % | %zinsen | Ein Gruppe von Werten mit einem String als Index |
Subroutine | & | &was | Ein aufrufbares Stück Perl-Code |
Typeglob | * | *maus | Alles namens maus |
Code-Beispiel:
$spud = "Wow!"; @spud = ("idaho", "russet"); *potato = *spud; # Zuweisung eines Typeglob-Alias' / Alias potato to spud using typeglob assignment print "$potato\n"; # prints "Wow!" print @potato, "\n"; # prints "idaho russet"
nettes Spielzeug
Ich habe typeglobs noch nie wirklich benutzt und denke auch, daß das kaum jemand tut. Es ist ein Relikt aus den Urzeiten von Perl und wurde früher benutzt, um Arrays an Funktionen zu übergeben, als es in der Sprache noch keine Referenzen gab (siehe perldoc perldata). Im Grunde ist das eine der Spracheigenschaften, die wirklich nur Verwirrung bringen. Wenn man einen Typeglob zuweist ist das im Grunde, als ob man ein Struktur mit einem Skalar, einem Array und einem Hash zuweist. Den Fall, in dem man das wirklich so braucht und wo es die Lesbarkeit erhöht statt zu vermindern, müsste man IMO mit der Brechstange konstruieren (Hallo Jens!).
Die einzige echte Anwendung, die ich mal hatte ist, daß neben den o.g. Typen auch Filehandles "geglobbt" werden, die anderweitig nicht so leicht zuweisbar sind. Dies hat sich jedoch mit Einführung der file-Referenz-Objekte (ab Perl 5.6) auch erledigt. Die Anwendungen für typeglobs reduzieren sich damit aus meiner Sicht auf ganz wenige Fälle z.B. für code obfuscation. -- ThomasBayen
Erläuterungen: deutsch und englisch1 und englisch2.
Die einzige echte Anwendung, die ich mal hatte ist, daß neben den o.g. Typen auch Filehandles "geglobbt" werden, die anderweitig nicht so leicht zuweisbar sind. Dies hat sich jedoch mit Einführung der file-Referenz-Objekte (ab Perl 5.6) auch erledigt. Die Anwendungen für typeglobs reduzieren sich damit aus meiner Sicht auf ganz wenige Fälle z.B. für code obfuscation. -- ThomasBayen
Add new attachment
Only authorized users are allowed to upload new attachments.