Thread Kontextproblem: Perl liest ja gerne zwischen den Zeilen (3 answers)
Opened by GH@NDI at 2003-11-19 14:46

GH@NDI
 2003-11-19 14:46
#72026 #72026
User since
2003-09-21
16 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo!

Ich habe da ein kleines Problem. Das an sich eigentlich kein Problem ist, da es sich über ein paar extra Zeilen Code einfach aus der Welt schaffen lässt.

Aber die mir aufgefallene Problematik, hat mich dann doch mal interessiert.

Man nehme folgenden Beispielcode:
Code (perl): (dl )
1
2
3
4
require "MeinModulpm";
my $modul = MeinModul->new();

my @daten = $modul->getData() || die $modul->getError();


das Modul "MeinModul.pm" sieht dann vereinfacht so aus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
package MeinModul;

sub new {
        # Standart new-deklaration...
}

sub getData {
        my $self = shift;
        my @daten = ("daten", "und noch mehr daten", "daten, überall nur daten");
        return @daten;
}
1;


Bei diesem Versuchsaufbau, wird der Aufruf von "$modul->getData();" obwohl er eigentlich im Listen-Kontext ausgeführt werden sollte - zumindest hab ich mir das so gedacht - im Skalaren-Kontext ausgeführt. Somit bekomme ich die Anzahl der Einträge in der zurückgegebenen Liste, anstatt die Liste selber zurück.

Spontan sind mir dann 2 mögliche Lösungen in den Kopf gekommen:
1. Eine Listenreferenz zurück zu geben
2. Die Abfrage ob überhaupt etwas zurückgegeben wurde, in eine neue Zeile packen.

Beide Möglichkeiten wären soweit eigentlich ok, nur mag ich diese nachgestellte oder-Abfrage und frage mich jetzt, ob es keine Möglichkeit gibt, hier den Listen-Kontext zu erzwingen?

Sämtliche Versuche mit Klammern zu arbeiten sind bei mir fehlgeschlagen, also weis jemand einen Rat oder ist das schlicht und ergreifend so nicht lösbar?

Mit bestem Dank im vorraus,
Sven\n\n

<!--EDIT|GH@NDI|1069246188-->

View full thread Kontextproblem: Perl liest ja gerne zwischen den Zeilen