Dieter: Modul-Einbindung nötig oder nicht

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

  1. 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

  2. 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