Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8637[/thread]

Nicht Erklärbarer Compile Error



<< >> 8 Einträge, 1 Seite
Aleks
 2007-01-11 17:35
#73127 #73127
User since
2006-06-12
19 Artikel
BenutzerIn
[default_avatar]
Hallo Leute!
Ich gehe absolut am Stock...

Ich habe angefangen ein Programm zu schreiben und bekomme immer einen Compile error beim perl -c. Dieser verschwindet wenn ich zwei Zeilen auskommentiere, die gar keinen Fehler enthalten können!

Hier einmal das (bis jetzt) komplette Proggi:
Code: (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
41
42
43
44
45
#!/usr/bin/perl -w

use strict;
use warnings;
use diagnostics;
use Net::Telnet;
use ParseConfigFile;
use ParseConfigFile qw(check_param);

## Funktionen
wrlog{
my $msg = shift;
my $logfile = shift;
open LOG, ">>$logfile" or die "Konnte Logdatei nicht oeffnen";
print LOG scalar(localtime(time)) . " : " . $msg . "\n";
close LOG or die "Konnte Logdatei nicht schliessen";
}

## Hauptprogram
unless ( defined $ARGV[0] && -f $ARGV[0] && -r $ARGV[0] ){
print "Usage: $0 <config_file>\n";
print "Geben Sie bitte einen gueltigen Pfad zu einer lesbaren\n";
print "Konfigurationsdatei ein.\n";
exit 255;
}

my %options = read_file($ARGV[0]);
my @keys=qw(user pass hostsfile logfile);

## Testen ob alle benoetigten Werte im Konfigfile gesetzt sind
unless ( check_param(\@keys, \%options) ){
print "In der Konfigurationsdatei wurde mindestens ein Fehler gefunden.\n";
print "Bitte in folgender Form eintragen: 'schluessel=wert'.\n";
print "Um das '=' Zeichen bitte keine Freizeichen einbauen.\n";
exit 254;
} else { ## Ab hier lauft das Hauptprogramm
my $log = $options{'logfile'};
my $hosts = $options{'hostsfile'};
my $user = $options{'user'};
my $pass = $options{'pass'};

unless ( -f $hosts && -r $hosts ){
wrlog("FEHLER - Das hostsfile kann nicht geoeffnet/gelesen werden. Abbruch", $log);
}
}


und hier die Fehlermeldung:
# perl -c cso_cisco_dsl_upgrade.pl
syntax error at cso_cisco_dsl_upgrade.pl line 20, near "){"
syntax error at cso_cisco_dsl_upgrade.pl line 25, near "}"
cso_cisco_dsl_upgrade.pl had compilation errors (#1)
(F) The final summary message when a perl -c fails.

Uncaught exception from user code:
syntax error at cso_cisco_dsl_upgrade.pl line 20, near "){"
syntax error at cso_cisco_dsl_upgrade.pl line 25, near "}"
cso_cisco_dsl_upgrade.pl had compilation errors.

Durch testen bekam ich herraus das die Meldung so nicht ganz richtig ist.
Wenn ich nämlich Zeile 11 und 17 auskommentiere, dann läuft das perl -c!! Das kann aber nicht sein, weil die Zeilen nur aus:

11: wrlog{
und
17: }

bestehen. Was soll daran Falsch sein?

Sonderzeichen kommen auch nicht in Frage, habe mit od nachgesehen. Habe die Zeilen auch mal im Editor gelöscht und dann von hand neu geschrieben, bringt nichts... Das ganze ist mit perl 5.6.1 und 5.8.7 reproduzierbar..

Hat jemand eine Ahnung was da los sein kann? Ich weiß echt nicht mehr weiter..

Gruß,
Aleks
renee
 2007-01-11 17:57
#73128 #73128
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mit
Code: (dl )
1
2
3
4
5
6
7
wrlog{
my $msg = shift;
my $logfile = shift;
open LOG, ">>$logfile" or die "Konnte Logdatei nicht oeffnen";
print LOG scalar(localtime(time)) . " : " . $msg . "\n";
close LOG or die "Konnte Logdatei nicht schliessen";
}


Meinst Du sicherlich
Code: (dl )
1
2
3
4
5
6
7
sub wrlog{
my $msg = shift;
my $logfile = shift;
open LOG, ">>$logfile" or die "Konnte Logdatei nicht oeffnen";
print LOG scalar(localtime(time)) . " : " . $msg . "\n";
close LOG or die "Konnte Logdatei nicht schliessen";
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2007-01-11 19:12
#73129 #73129
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo,
[quote=Aleks,11.01.2007, 16:35]
Code: (dl )
1
2
#!/usr/bin/perl -w
use warnings;
[/quote]
macht das Sinn?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
PerlProfi
 2007-01-11 19:21
#73130 #73130
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Ich glaube nicht, und wenn es kompatibel zu älteren Perl Versionen sein soll, würde ich das use warnings gleich ganz weglassen und nur den Flag setzen.

MfG PerlProfi
renee
 2007-01-11 20:13
#73131 #73131
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Naja, wie weit willst Du rückwärtskompatibel sein? use warnings ist seit 5.6 dabei...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2007-01-11 23:51
#73132 #73132
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei CPAN:Kwalify wollte ich bis 5.004 rückwärtskompatibel sein. Dann schreibt man einfach:
Code: (dl )
1
2
3
4
5
6
7
BEGIN {
if ($] < 5.006) {
$INC{"warnings.pm"} = 1;
*warnings::import = sub { };
*warnings::unimport = sub { };
}
}
und kann fröhlich "use warnings" verwenden.
Aleks
 2007-01-12 12:04
#73133 #73133
User since
2006-06-12
19 Artikel
BenutzerIn
[default_avatar]
Hallo renee!

perl -e'print "DANKE!!!!!!" x 1000'

Habe vorher in nem sh script gefummelt daher wahrscheinlich die Geistige Umnachtung...

THX und Gruß,
Aleks
Aleks
 2007-01-12 12:18
#73134 #73134
User since
2006-06-12
19 Artikel
BenutzerIn
[default_avatar]
mmmh, die Sache mit dem -w und use warnings macht echt keinen Sinn. Werde wohl nur das use warnings weiter verwenden, da ich auch gar nicht möchte das perl unter 5.6 verwendet wird. Die ganzen Programme sind nur für internen Gebrauch und teilweise abhängig von Modulen die in 5.0.. nicht da sind. Manchmal ist es weniger Arbeit einfach eine komplett neue perl Version zu installieren als zig Module...

Aber auch für diesen Hinweis THX!

Grüße,
Aleks
<< >> 8 Einträge, 1 Seite



View all threads created 2007-01-11 17:35.