🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.perl
11 messages
11 total messages Started by Rolf Buenning Fri, 02 Aug 2024 08:58
undefined subroutine...<STDIN> line 3
#23921
Author: Rolf Buenning
Date: Fri, 02 Aug 2024 08:58
31 lines
1148 bytes
Hallo Spezialisten ;)

vor etwas sehr längerer Zeit haben wir hier schon einmal darüber
diskutiert.
Ich wollte mir eine Terminverwaltung schreiben.
Sie ist inzwischen weit fortgeschritten.
Da ich aber mit den hier genannten Datenformaten nicht klar
gekommen bin, habe ich mich entschieden, das Datenformat selbst
zu verwalten.
Ein Termin ist einfach ein String, dessen Teile durch "|" getrennt sind.

"Titel|Datum(TT.MM.JJJJ)|Wie früh erinnert wird,Anzahl Tage\n"

Um auf die einzelnen Teile des Termins zugreifen zu können,
habe ich mir eine Sub ausgedacht, getTPart.
Sie liefert je nach Parameter aus dem übergebenen Termin
die Teile zurück.

Auswahl von Terminen u.a. mache ich mit switch().
Beim Ändern von Terminen funktioniert das auch, bis auf
den dritten Teil, da bekomme ich die o.g. Fehlermeldung,
und ich komme zum Teufel nicht auf den Grund.
Vielleicht kann mir jemand, der mehr Ahnung von Perl
hat, helfen.

  case 2 { print "Wieviel Tage voraus erinnern? "; chomp($newe = <STDIN>);
    $newrecord = join ('|', getTpart($records[$rwahl],"T"), getTpart($records[$rwahl],"F"), $newe);

Das ist die betr. Codezeile.

--
Gruß Rolf
Re: undefined subroutine...<STDIN> line 3
#23922
Author: Ulli Horlacher
Date: Fri, 02 Aug 2024 09:21
22 lines
850 bytes
Rolf Buenning <r.buenning@gmx.de> wrote:

> Auswahl von Terminen u.a. mache ich mit switch().

switch ist nicht mehr Bestandteil vom Standard-Perl, das solltest du meiden!


> den dritten Teil, da bekomme ich die o.g. Fehlermeldung,
> und ich komme zum Teufel nicht auf den Grund.
> Vielleicht kann mir jemand, der mehr Ahnung von Perl
> hat, helfen.
>
>   case 2 { print "Wieviel Tage voraus erinnern? "; chomp($newe = <STDIN>);
>     $newrecord = join ('|', getTpart($records[$rwahl],"T"), getTpart($records[$rwahl],"F"), $newe);

Du hast getTpart() nicht definiert.

--
Ullrich Horlacher              Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart         E-Mail: horlacher@tik.uni-stuttgart.de
Allmandring 30a                Tel:    ++49-711-68565868
70569 Stuttgart (Germany)      WWW:    https://www.tik.uni-stuttgart.de/
Re: undefined subroutine...<STDIN> line 3
#23923
Author: Rolf Buenning
Date: Fri, 02 Aug 2024 10:08
28 lines
930 bytes
Ulli Horlacher <framstag@rus.uni-stuttgart.de> schrieb:
> Rolf Buenning <r.buenning@gmx.de> wrote:
>
>> Auswahl von Terminen u.a. mache ich mit switch().
>
> switch ist nicht mehr Bestandteil vom Standard-Perl, das solltest du meiden!

Ja, aber ich mache das ja nur für mich. Ich will ja nichts
veröffentlichrn o. so, und unendliche if/elsif etc. fand ich auch nicht
so prickelnd.

>
>
>> den dritten Teil, da bekomme ich die o.g. Fehlermeldung,
>> und ich komme zum Teufel nicht auf den Grund.
>> Vielleicht kann mir jemand, der mehr Ahnung von Perl
>> hat, helfen.
>>
>>   case 2 { print "Wieviel Tage voraus erinnern? "; chomp($newe = <STDIN>);
>>     $newrecord = join ('|', getTpart($records[$rwahl],"T"), getTpart($records[$rwahl],"F"), $newe);
>
> Du hast getTpart() nicht definiert.
>
Sie ist definitiv definiert, vorher, bei Titel und Datum  funktioniert
 es ja, nur bei dieser einen Zeile eben nicht.


--
Gruß Rolf
Re: undefined subroutine...<STDIN> line 3
#23924
Author: Ulli Horlacher
Date: Fri, 02 Aug 2024 10:23
32 lines
1204 bytes
Rolf Buenning <r.buenning@gmx.de> wrote:
> Ulli Horlacher <framstag@rus.uni-stuttgart.de> schrieb:
>> Rolf Buenning <r.buenning@gmx.de> wrote:
>>
>>> Auswahl von Terminen u.a. mache ich mit switch().
>>
>> switch ist nicht mehr Bestandteil vom Standard-Perl, das solltest du meiden!
>
> Ja, aber ich mache das ja nur für mich. Ich will ja nichts
> veröffentlichrn o. so, und unendliche if/elsif etc. fand ich auch nicht
> so prickelnd.

Wenn du aber ein Perl update einspielst, kann es sein, dass dein Code
nicht mehr funktioniert!


>>>   case 2 { print "Wieviel Tage voraus erinnern? "; chomp($newe = <STDIN>);
>>>     $newrecord = join ('|', getTpart($records[$rwahl],"T"), getTpart($records[$rwahl],"F"), $newe);
>>
>> Du hast getTpart() nicht definiert.
>>
> Sie ist definitiv definiert, vorher, bei Titel und Datum  funktioniert
>  es ja, nur bei dieser einen Zeile eben nicht.

Wie lautet die Fehlermneldung EXAKT?


--
Ullrich Horlacher              Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart         E-Mail: horlacher@tik.uni-stuttgart.de
Allmandring 30a                Tel:    ++49-711-68565868
70569 Stuttgart (Germany)      WWW:    https://www.tik.uni-stuttgart.de/
Re: undefined subroutine...<STDIN> line 3
#23926
Author: Rolf Buenning
Date: Fri, 02 Aug 2024 10:57
25 lines
784 bytes
Ulli Horlacher <framstag@rus.uni-stuttgart.de> schrieb:
> Rolf Buenning <r.buenning@gmx.de> wrote:
>> Ulli Horlacher <framstag@rus.uni-stuttgart.de> schrieb:
>>> Rolf Buenning <r.buenning@gmx.de> wrote:
>>>
>
>
>>>>   case 2 { print "Wieviel Tage voraus erinnern? "; chomp($newe = <STDIN>);
>>>>     $newrecord = join ('|', getTpart($records[$rwahl],"T"), getTpart($records[$rwahl],"F"), $newe);
>>>
>>> Du hast getTpart() nicht definiert.
>>>
>> Sie ist definitiv definiert, vorher, bei Titel und Datum  funktioniert
>>  es ja, nur bei dieser einen Zeile eben nicht.
>
> Wie lautet die Fehlermneldung EXAKT?
>
>
Wie es im Subjekt steht.

Undefined subroutine &main::getTpart called at ./Termine line 279, <STDIN> line 3.

Besonders das "<STDIN> line 3" erstaunt mich.

--
Gruß Rolf
Re: undefined subroutine...<STDIN> line 3
#23928
Author: Rolf Buenning
Date: Fri, 02 Aug 2024 11:08
18 lines
712 bytes
Marcel Logen <333200007110-0201@ybtra.de> schrieb:
> Rolf Buenning in de.comp.lang.perl:
>
>>habe ich mir eine Sub ausgedacht, getTPart.
>                                        ^
> [...]
>
>>  case 2 { print "Wieviel Tage voraus erinnern? "; chomp($newe = <STDIN>);
>>    $newrecord = join ('|', getTpart($records[$rwahl],"T"), getTpart($records[$rwahl],"F"), $newe);
>                                  ^                               ^
> Liegt es vielleicht an dem kleinen p?
>
GRRRRR!
Asche auf mein Haupt! Wie ist sowas möglich?
Tagelang, wenn nicht gar wochenlang, starre ich auf diese Zeile und sehe das nicht!
Natürlich lag es daran.
Danke für das Entfernen der Tomaten von meinen Augen.
--
Gruß Rolf
Re: undefined subroutine...<STDIN> line 3
#23929
Author: Rolf Buenning
Date: Fri, 02 Aug 2024 11:16
14 lines
444 bytes
Marcel Logen <333200007110-0201@ybtra.de> schrieb:
> Rolf Buenning in de.comp.lang.perl:
>>Undefined subroutine &main::getTpart called at ./Termine line 279, <STDIN> line 3.
>>
>>Besonders das "<STDIN> line 3" erstaunt mich.
>
> Vermutlich:
>
>    <STDIN> line 1 = Eingabe von "Titel"
>    <STDIN> line 2 = Eingabe von "Datum"
>    <STDIN> line 3 = Eingabe von "Tage"
Ja, so wird's sein, darüber nachgedacht habe ich
auch schon.
--
Gruß Rolf
Re: undefined subroutine...<STDIN> line 3
#23925
Author: Marcel Logen
Date: Fri, 02 Aug 2024 12:27
16 lines
1061 bytes
Rolf Buenning in de.comp.lang.perl:

>habe ich mir eine Sub ausgedacht, getTPart.
                                       ^
[...]

>  case 2 { print "Wieviel Tage voraus erinnern? "; chomp($newe = <STDIN>);
>    $newrecord = join ('|', getTpart($records[$rwahl],"T"), getTpart($records[$rwahl],"F"), $newe);
                                 ^                               ^
Liegt es vielleicht an dem kleinen p?

Marcel                                                     met5 (736165)
--
                  ╭───────╮            ╭───╮  ╭───╮ ╭──╮   ╭─╮  ╭───────
                  ╰────╮  │            ╰─╮ ╰──╯   ╰─╯  ╰─╮ │ │  ╰───╮
──╮          ╭─╮ ╭─────╯  ╰─╮ ╭──╮   ╭───╯       ╭───────╯ │ │   ╭──╯
  ╰──────────╯ ╰─╯          ╰─╯  ╰───╯           ╰─────────╯ ╰───╯306991
Re: undefined subroutine...<STDIN> line 3
#23927
Author: Marcel Logen
Date: Fri, 02 Aug 2024 13:04
27 lines
1294 bytes
Rolf Buenning in de.comp.lang.perl:

>Ulli Horlacher <framstag@rus.uni-stuttgart.de> schrieb:
>> Rolf Buenning <r.buenning@gmx.de> wrote:

>>> Sie ist definitiv definiert, vorher, bei Titel und Datum  funktioniert
>>>  es ja, nur bei dieser einen Zeile eben nicht.
>>
>> Wie lautet die Fehlermneldung EXAKT?
>>
>Wie es im Subjekt steht.
>
>Undefined subroutine &main::getTpart called at ./Termine line 279, <STDIN> line 3.
>
>Besonders das "<STDIN> line 3" erstaunt mich.

Vermutlich:

   <STDIN> line 1 = Eingabe von "Titel"
   <STDIN> line 2 = Eingabe von "Datum"
   <STDIN> line 3 = Eingabe von "Tage"

Marcel                                                     mg4b (737419)
--
           ╭────╮         ╭─╮   ╭──────╮  ╭──────────╮  ╭──────╮
    ╭──────╯    │   ╭─╮   │ ╰───╯  ╭───╯  ╰───────╮  ╰──╯  ╭───╯
╭───╯  ╭────────╯   │ │   ╰────╮   ╰───╮  ╭───╮ ╭─╯        ╰─╮
│      ╰────────────╯ ╰────────╯       ╰──╯   ╰─╯   f02524   ╰─────────╮
Re: undefined subroutine...<STDIN> line 3
#23931
Author: Rolf Buenning
Date: Fri, 02 Aug 2024 13:22
18 lines
636 bytes
Thomas Dorner <dclp240802.dorner@spamgourmet.com> schrieb:
> Rolf Buenning <r.buenning@gmx.de> writes:
>
>> Ulli Horlacher <framstag@rus.uni-stuttgart.de> schrieb:
>>>>>
>>>>> Du hast getTpart() nicht definiert.
>>>>>
>>>> Sie ist definitiv definiert, vorher, bei Titel und Datum  funktioniert
>>>>  es ja, nur bei dieser einen Zeile eben nicht.
>>>
> Also hatte Ulli in seiner ersten Antwort recht, getTpart ist nicht
> (korrekt) definiert oder sichtbar.

Natürlich hatte er recht (wie meistens).
getTpart war ja auch nicht definiert, musste ja auch
mit "P" geschrieben werden.
(Ich bin immer noch nicht d#rüber weg!)
--
Gruß Rolf
Re: undefined subroutine...<STDIN> line 3
#23930
Author: Thomas Dorner
Date: Fri, 02 Aug 2024 14:45
38 lines
1187 bytes
Rolf Buenning <r.buenning@gmx.de> writes:

> Ulli Horlacher <framstag@rus.uni-stuttgart.de> schrieb:
>> Rolf Buenning <r.buenning@gmx.de> wrote:
>>> Ulli Horlacher <framstag@rus.uni-stuttgart.de> schrieb:
>>>> Rolf Buenning <r.buenning@gmx.de> wrote:
>>>>
>>
>>
>>>>>   case 2 { print "Wieviel Tage voraus erinnern? "; chomp($newe = <STDIN>);
>>>>>     $newrecord = join ('|', getTpart($records[$rwahl],"T"),
>>>>> getTpart($records[$rwahl],"F"), $newe);
>>>>
>>>> Du hast getTpart() nicht definiert.
>>>>
>>> Sie ist definitiv definiert, vorher, bei Titel und Datum  funktioniert
>>>  es ja, nur bei dieser einen Zeile eben nicht.
>>
>> Wie lautet die Fehlermneldung EXAKT?
>>
>>
> Wie es im Subjekt steht.
>
> Undefined subroutine &main::getTpart called at ./Termine line 279, <STDIN> line 3.

Also hatte Ulli in seiner ersten Antwort recht, getTpart ist nicht
(korrekt) definiert oder sichtbar.

> Besonders das "<STDIN> line 3" erstaunt mich.

Die Standardeingabe steht in Zeile 3.

Viele Grüße, Thomas

PS: Wenn das alles tatsächlich nur eine Zeile ist, solltest Du Deinen
Code besser strukturieren.  Dann lassen sich auch Fehler leichter
finden.
--
Adresse gilt nur kurzzeitig!
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads