Modul-Einbindung nötig oder nicht
Dieter
- perl
Hallo,
als Perl-Anfänger habe ich folgendes Problem.
Immer wieder finde ich in einem Beispielprogramm eine Funktion, die ich bei mir testen möchte. Manchmal kommt dann der Fehler "undefined".
Woher weiß ich, ob ich einen Modul einbinden muss und ggf. welchen?
Gruß
Dieter
hi Dieter,
Woher weiß ich, ob ich einen Modul einbinden muss und ggf. welchen?
# diese beiden Pragmas IMMER einbinden!!!!
use strict;
use warnings;
Und Du wirst eine aussagekräftige Fehlermeldung sehen.
Hotti
hi Dieter,
Woher weiß ich, ob ich einen Modul einbinden muss und ggf. welchen?
nochwas, bischen ausführlicher. Es gibt verschiedene Möglichkeiten der Verwendung eines Perl-Moduls. Module können Funktionen exportieren, wobei es auch da wieder zwei Möflichkeiten gibt:
use Foo qw(bar); # Export der Funktion 'bar' auf Import-Anforderung in main
print bar(123); # nutze die Funktion in main
use Foo; # Foo exportiert Funktionen, Variablen (Symbole)
print bar(123); # nutze eine der exportierten Funktionen
Package main ist Dein Perl-Script, was Module einbindet. Andere Module möchten eine Instanz erstellt haben
use Foo;
my $f = Foo->new(); # Erstelle in er main eine Instanz von Foo, ein Objekt
print $f->bar(123); # benutze Methode bar mit Argument 123
I.d.R. werden Methoden mit dem Arrow-Operator aufgerufen (über die Instanz, das Objekt). Hier sieht der Programmierer gleich: aha, Methode bar() gehört zur Klasse (Package) Foo.
Wenn Du Scripts bekommst, wo 'einfach so' mal ne Funktion aufgerufen wird:
my $x = fx(123)
und Du Dich fragst, wozu gehört fx(), rufe die Perldoc
perldoc -f fx
und Perl wird antworten: No documentation for perl function `fx' found
Ergo gehört fx() zu irgendeinem Modul, wofür Dir derjenige, von dem Du das Script hast, sicher mehr sagen kann ;)
Hotti