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