Siechfred: Referenz auf Referenz auf Hash/Filehandler übergeben?

Beitrag lesen

Hell-O!

open (OUTPUT ">", $output_file);

Nur zur Info an Eternius: Das ist die Syntax von Perl 5.8, niedrigere Versionen unterstützen diese Schreibweise m.E. noch nicht.

my $return=&conf_pe(%I, *OUTPUT, 'initial');

Das sollte so funktionieren. Aber bist du dir sicher, dass du dem Funktionsaufruf das '&' voranstellen möchtest (siehe perlsub)?

#Modul1:
sub conf_pe
{
   my ($HI, $OUTPUT, $conftype)=@_;
   my $return=0;

if ($conftype eq "initial")
   { $return=conf_initial_pe{%I, *OUTPUT}; }
   ...

return $return;
}

Warum hier nochmal die Prüfung? Rufe doch gleich conf_initial_pe auf, ohne den Umweg über conf_pe. Ansonsten wäre das Durchschleifen der Hash- und Filehandle-Referenz völlig überflüssig. Der Subroutine die Argumente in geschweiften Klammern zu übergeben, habe ich so noch nicht gesehen, ich kenne eigentlich nur den Aufruf mit runden Klammern.

#Modul2
sub conf_initial_pe
{
   my ($HI, $OUTPUT)=@_;
   my $I=%{$HI};

Warum kopierst du die Hashreferenz wieder zurück in einen Hash, statt die Referenz weiter zu nutzen?

my %O=get_pe_config($I{'ce'});

Hier sollte es folgender Code auch tun:

my %O=get_pe_config($$HI{'ce'});

Sieht einer den Fehler :D ?

Nein, nicht direkt, aber die möglichen Fehlerquellen, die mir aufgefallen sind, habe ich genannt. Vielleicht hilft's dir ja.

Siechfred

--
Hier könnte Ihre Werbung stehen.
Viel Lärm um nichts || Die neue 1%-Regelung