Perl und seine Globs#
Der Begriff
glob (global operator) ist in Perl doppelt belegt, sozusagen ein Teekesselchen.
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.txt
nä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
.