Leser: 2
|< 1 2 3 >| | 24 Einträge, 3 Seiten |
1 2 3 4 5 6 7 8 9 10 11 12
sub logfilename { my $self = shift; my $logfilename; if ($self->[1]) { $logfilename = $self->[1]; } else { $logfilename = "DEFAULT_logfile_name"; } return $logfilename; }
1 2
my $log2 = <Modulpfad>->logfilename(); print "Zurueckgegebener Wert von der subroutine: ".$log2;
1
2
3
Z:\test> perl test_log.pl
Can't use string ("<Modulpfad>") as an ARRAY ref while "strict refs" in u
se at Z:/test/log.pm line 99.
<Mdoulpfad>->logfilename();
1
2
3
# hierbei sollte eine "blessed array reference" zurückgeliefert werden
my $object = <Modulpfad>->new();
my $log2 = $object->logfilename();
my $object = <Modulpfad>->new();
my $log2 = $object->logfilename();
Brenner+2009-01-22 12:00:52--Ich habe mit Data::Dumper nachgeschaut.
In $self landet das gesamte array welches im Hauptprogramm übergeben wurde.
In z.B $self->[1] ist dann auch der entsprechende Wert drin.
Brenner+2009-01-22 12:04:26--Wenn ich "use stricts" im Hauptprogramm auskommentiere läuft alles sauber durch, aber das ist jan icht Sinn der Sache.
if (ref $self eq 'ARRAY' and $self->[1])
pq+2009-01-22 12:06:19--Brenner+2009-01-22 12:04:26--Wenn ich "use stricts" im Hauptprogramm auskommentiere läuft alles sauber durch, aber das ist jan icht Sinn der Sache.
es heisst strict und nicht stricts, und nein, das ist nicht sinn der sache.
bevor du eine arrayref dereferenzieren willst, musst du prüfen, ob es eine arrayref ist.
Code (perl): (dl )if (ref $self eq 'ARRAY' and $self->[1])
im übrigen finde ich es keinen schönen stil, irgendwelche attribute über array-indizes abzufragen,
das kann sich ja kein mensch merken. benutze wenigstens konstanten mit sprechenden namen.
if (ref $self eq 'ARRAY' and $self->[1])
1
2
3
4
5
6
$VAR1 = [
'1',
'logfile',
'C:\\WINNT\\system32\\config'
];
$VAR1 = '<Modulpfad><Modulname>';
|< 1 2 3 >| | 24 Einträge, 3 Seiten |