#!perl -w use strict; package initialize; sub new { my $class = shift; my $name = shift; bless \$name,$class; } sub IsFulfilled{ my $name = $_[1]; #Boolean ob etwas stattgefunden hat return $name ; } package Method; use base qw(initialize); sub checkIsFulfilled { print $_[0]->IsFulfilled($_[1]); } package NotMethod; use base qw(initialize); sub checkIsFulfilled() { print $_[0]->IsFulfilled($_[1]*(-1)+1); # Umkehrung Method } package ANDArray; use base qw(initialize); sub checkIsFulfilled() { foreach my $k (keys %{$_[1]}) # hier werden alle Values durchgelaufen und ihre Methode checkIsFulfilled aufgerufen.Liefern alle Methoden ein true ist alles in Ordnung { $_[1]{$k}->checkIsFulfilled($_[1]{$k}->IsFulfilled(1)); # An dieser Stelle hänge ich - Ich möchte ja auf den Wert zugreifen, den ich in der main bereits gesetzt habe mit: $method->IsFulfilled(1); # Ich möchte quasi auf $_[1]{k}->IsFulfilled zugreifen - den Wert, den ich in der Main bereits gesetzt habe - und ihn hier nicht erst deklarieren. Wie realisiere ich das, bzw was hab ich übersehn? #derzeitige Ausgabe: 10 - somit haben wir bei der NotMethod eine erfolgreiche Umkehrung. } } package ORArray; #zukünftige Implementation: Liefert eine Methode ein true ist alles in Ordnung use base qw(initialize); package main; my $method = Method->new("First Method"); my $notmethod = NotMethod->new("Second Method"); $method->IsFulfilled(1);# Irgendwann im Programm werden zu allen Methoden ihr Status "IsFulfilled" gesetzt $notmethod->IsFulfilled(0); #Zum Schluss gibt es einen Hash, in welchem alle Methoden stehen. Als Value wird eine Instanz übergeben und überprüft, ob der Hash true oder False zurückliefert. my %hash = ('method' => $method,'notmethod'=>$notmethod); my $ANDArray = ANDArray -> new ("AndArray"); $ANDArray -> checkIsFulfilled(\%hash);