Thread Bei Abfrage des Rückgabewerts aus einer Subroutine gibts Fehler...
(23 answers)
Opened by Brenner at 2009-01-22 12:26
Wenn Du das Modul objektorientiert erstellst, solltest Du es auch so benutzen.
Was mir auffällt: - Ich sehe keinen Sinn für die Variablen @ISA und @EXPORT im Hauptprogramm - Was soll Deine While-Schleife bewirken? @XLOGVALUES001 ist leer und enthält keine Werte; ausserdem, wenn Du ein Array leeren willst, verwende doch bitte: @array = (); - Jedes Feld Deines Array hat eine Bedeutung, warum benutzt Du keinen Hash, mit dem Du die Felder sprechend benennen könntest? - Dein Modul besitzt zwar einen Konstruktor, der aber niemals aufgerufen wird. ein (schnell zusammengetippter(!)) Vorschlag (ungetestet): Hauptprogramm: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #! /usr/bin/perl use strict; use warnings; use lib qw( Z:/test ); use test::log; my $log = test::log->new( { write_logfile => 0, # 0 => nein, 1 => ja logfile_name => 'logfile', logfile_path => 'C:/WINNT/system32/config', } ); printf "Name des Logfiles: %s\n", $log->logfilename; __END__ Modul: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 package test::log; use strict; use warnings; $test::log::VERSION = "0.0.2"; my %defaults = ( write_logfile => 0, # 0 => nein, 1 => ja logfile_name => 'DEFAULT_logfile_name', logfile_path => 'C:/WINNT/system32/config', ); sub new { my ( $class, $ref ) = @_; my $self; if ( ref( $ref ) ne 'HASH' ) { die "Please provide a hash reference as argument!\n"; } # uebernehme die definierten Defaults und die Inhalte der übergebenen # Hash-Referenz; diese Inhalte ueberlagern ggfs. die Defaults, sodass in # $self die Defaults für Parameter gelten, die nicht mitgegeben wurden $self = { %defaults, %$ref }; bless $self, ref( $class ) || $class; return $self; } sub logfilename { my ( $self, @args ) = @_; return $self->{logfile_name} if exists $self->{logfile_name}; return undef; } 1; edit: - $VERSION Variable im Modul eingesetzt - Übernahme der Defaults in $self eingebaut - TYPO fixed: logfilename != logfile_name meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |