Skrilax: Package - Verarbeitung

Beitrag lesen

Hallo!

Wer hat eine Idee, woran das liegen könnte?

*meld* ich hab ne Idee

Du exportierst zwar die 'isEmail'-Subroutine aus ihrem Namensraum, allerdings musst du sie dazu auch explizit im Hauptnamensraum importieren.
Alternativ rufst du sie mit Angabe des Namensraumes auf:
my $rc = CheckEMail::isEmail($addr);

Was mir an der Stelle grad auffällt: Benutzt du etwa gar nicht das strict-Pragma? Sofort ab in die Ecke zum Schämen! Danach folgende Zeilen an den Anfang des Skriptes schreiben und die Fehlermeldungen beseitigen:

  
use strict;  
use warnings;  

siehe auch hier

Weitere Fragen:
Stellt man Subroutinen besser vor oder hinter das Hauptprogramm?

Geschmackssache. Prototypen werden allerdings nur erkannt, wenn du sie vor dem ersten Aufruf definierst. Die Subroutine selbst kann deswegen ja immer noch unten drunter stehen, was in der Regel der Übersicht zuträglich ist.

Wie stelle ich es an, das package als externe Datei einzubinden?

Im gleichen Verzeichnis wie das Skript als CheckEmail.pm speichern, im Skript selbst mit use CheckEmail; einbinden. Dann funktioniert das auch mit dem Exportieren auf Anhieb :)

Zudem ist IMHO nur so ist das Bilden eines eigenen, nicht objektorierentierten Packages erst sinnvoll.

Danke für Eure Hilfe

Büddeschön

Grüße, Skrilax

--
Democracy is a device which ensures that we shall be governed no better than we deserve.
(G. B. Shaw)