Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
my und local
mylocalmy und locallocallocal()-Variablen wirklich gebraucht?$_eval@ARGV%ENV%SIG@INC und %INC@ISA@EXPORT und @EXPORT_OK@_
$skalar; @array; %hash; # Skalare, Arrays und Hashes
# keine Deklaration nötig
use strict; # Prädeklaration nun
my $variable; # mit my() erforderlich!
$var = 17; $var = "string"; ... # Variablen sind heterogen
@var; $var; %var; # sind alle verschiedene Variablen
{ my $lexicallocal; } # Lokale Variable [Normalfall]
{ local $dynlocal; } # dynamisch lokale Variable
$#array = $big_value; # Präallokation von Arrays
keys %hash = $big_value; # Präallokation von Hashes
# Reservierte Variablen:
# ----------------------
use English; # nur für die Langform
$_; # Die wichtigste Variable
$<n> $& $` $' $+ $* # Pattern Matching
$. $/ $\ $, $| $"""" $; # Ein-/Ausgabe-Steuerung
$# $% $= $- $~ $^ $: $^L $^A # Report-Generator
$? $! $^E $@ # Fehler des Betriebssystems
$$ $< $> $( $) # Prozess-ID, User-ID, Group-ID
$0 # Name des Skripts
@ARGV @INC %INC %ENV %SIG # Die Umgebungen, Includes etc.
@ISA @EXPORT @EXPORT_OK # Klassenhierarchie, Namensräume
@_ # Parameterliste in Funktionen
# Allgemeine Informationen:
$[ $] $^D $^F $^H $^I $^M $^O $^P $^R $^S $^T $^W $^X $ARGV
print "Defined" if defined $variable; # Definierte Variable
print "True" if $variable; # ist nicht dasselbe!
undef $variable; # Wieder auf undef setzen
%:: %main:: %package:: # Symboltabellen
tie %myhash 'MyClass'; # Variablenbindung
sup.pl |
Lexikalischer Dateisichtbarkeitsbereich mit my |
sub.pl |
Wird durch sup.pl eingebunden |
local.pl |
Zeigt die Verwendung des dynamischen Scopings mit local |
mylocal.pl |
Unterschied zwischen my und local |
localuse.pl |
Eine sinnvolle Verwendung von local()-Variablen |
ioresvar.pl |
Reservierte Variablen der Ein-/Ausgabe |
errno.pl |
Reservierte Variablen für Fehlercodes |
process-id.pl |
Reservierte Variable $$ (Prozess-ID) |
uid.pl |
Identifiziert einen User mit reservierten Variablen |
usage.pl |
Zeigt Kommandozeilen-Parsing und eine usage()-Funktion |
psentry.pl |
Eintrag in der Prozessliste modifizieren |
show-status.pl |
Zeigt verschiedene Informationen über das System |
show-argv.pl |
Zeigt die Argumente der Kommandozeile an |
show-env.pl |
Anzeige der Umgebungsvariablen aus %ENV |
show-sig.pl |
Zeigt die Signale Ihres Systems mit %SIG an |
undef-false.pl |
Unterschied zwischen false und undefined, falsch! |
undef-undef.pl |
Unterschied zwischen false und undefined, okay. |
show-symtab.pl |
Zeigt die Haupt-Symboltabelle an |
Devel::Symdump anzeigen:Devel::Symdump. Programm show-symtab2.pl zeigt wie es geht. Es ist portabler als das im Buch gezeigte show-symtab.pl Programm. (1999/10/28)lex-shared.pl zeigt eine scheinbar harmlose Verwendung von my im Zusammenhang mit verschachtelten Subroutinen. Die Ausführung dieses Programms zeigt jedoch schnell, daß etwas nicht stimmt:
farid@sun-1:~/ex> ./lex-shared.pl Variable "$lexical_var" will not stay shared at ./lex-shared.pl line 11. Outer: 1 Inner: 2 Outer: 1 Inner: 3 Outer: 1 Inner: 4 Outer: 1 Inner: 5 Outer: 1 Inner: 6
$lexical_var gemeinsam von der externen und der internen Subroutine verwendet wurde. Bei nachfolgenden Aufrufen sind hingegen die Variablen irgendwie entkoppelt worden. Dies ist nicht das, was normalerweise erwartet wird. Wäre my_inner_function() eine anonyme Subroutine (siehe Kapitel 11), würde das Problem nicht entstehen. In diesem Fall hätten wir vielleicht eine Closure erzeugen können... Dieser Fehler ist in man perldiag dokumentiert. Ein Fall, bei dem dieser Fehler auftreten kann ist die Verwendung des Moduls Apache::Registry (siehe Einführung in mod_perl). (1999/11/07)
In Vorbereitung
In Vorbereitung
) zuviel:
sub critical { local $SIG{'INT'} = 'IGNORE'; do_critical(); }
#endif /* _H_MYHEADER */
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:55:46 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|