Cruz: mal ne packaging frage

Hallo Leute,

ich komme einfach nicht dahinter, wie ich aus einem package heraus eine Variable im main package zugreifen kann.

Hier ist ein Code Snippet:

package main;
use strict;

my $variable = "hallo"; # muss mit my declariert werden, weil strict

sub routine
{
    print "something";
}

irgendwo anders

package sub;
use strict;

&main::routine(); # das geht

print $variable; # das geht nicht

Die Variable sollte global verfügbar sein, aber strict zwingt mich dazu sie mit my zu deklarieren, wodurch sie nur noch im main package zur Verfügung steht.
Kann man das nicht irgendwie hinkriegen, dass man doch auf die Variable global zugreifen kann?

Gruß,
Cruz

  1. Halihallo Cruz

    ich komme einfach nicht dahinter, wie ich aus einem package heraus eine Variable im main package zugreifen kann.

    $main::variable oder
    @main::variable oder
    %main::variable

    kommt auf den Typ an.

    Die Variable sollte global verfügbar sein, aber strict zwingt mich dazu sie mit my zu deklarieren, wodurch sie nur noch im main package zur Verfügung steht.

    Nein, er erlaubt auch die Verwendung von

    perldoc -f our
    perldoc vars

    Viele Grüsse

    Philipp

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
    1. Hi Philipp,

      $main::variable oder
      @main::variable oder
      %main::variable

      kommt auf den Typ an.

      Das habe ich schon probiert, funktioniert aber leider nicht. Ich verstehe nicht warum.

      Ich kriege diese Warnung im Error Log:
      Use of uninitialized value in print at framework/Db.pm line 16.

      Woran liegt das?

      Gruß,
      Cruz

      1. Halihallo Cruz

        Das habe ich schon probiert, funktioniert aber leider nicht. Ich verstehe nicht warum.

        Sorry, mein Fehler. Die Variablen _müssen_ als global zugreifbar deklariert werden.
        Nochmals: use vars qw(...) oder our.

        Viele Grüsse

        Philipp

        --
        RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
        Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
        1. Ok hab's danke schön!!

          Gruß,
          Cruz

        2. use Mosche;

          Sorry, mein Fehler. Die Variablen _müssen_ als global zugreifbar deklariert werden.
          Nochmals: use vars qw(...) oder our.

          Oder per Exporter.pm explizit freigegeben sein...

          use Tschoe qw(Matti);

          --
            Anyone who quotes me in their sig is an idiot. -- Rusty Russell.