Thread Infomeldung bei Aufruf des Skripts über die Konsole
(5 answers)
Opened by Neyt at 2013-06-12 07:53
Der Code Ausschnitt hat ein paar Probleme.
Als Erstes: if( defined glob($options{output}). Das ist immer wahr. Da 0 und "" keine vernünftigen Namen für XML-Dateien sind , sollte man schreiben: if( glob($options{output} ) Damit wäre dein Hauptproblem gelöst, da undef 0 und "" ausgeschlossen werden. Als Zweites: Das deutet darauf hin das kein use strict; verwendet wird. So definiert sind die Variablen global. Das bedeutet eventuell vorhandene werte in diesen variablen werden hier überschrieben. das kann zu seltsamen Verhaltensweisen des Scripts führen. Sofern das keine Absicht ist (und es sieht mir nicht danach aus) sollten diese Variablen lokal defineirt werden: Und als Drittes: Code (perl): (dl
)
1 2 3 4 5 6 7 8 open( my $fh_out, '>', $xmlFile ) or warn "WARNING: Could not Open *$xmlFile*\n"; open( my $fh_out_dmp, '>', $dumperFile ) or warn "WARNING: Could not Open *$dumperFile*\n"; print $fh_out $xml; print $fh_out_dmp Dumper $rhDiffResult; close $fh_out; close $fh_out_dmp; Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 if(open my $fh, '>', $xmlFile ) { print $fh $xml; } else { warn "WARNING: Could not Open *$xmlFile* ($!)\n"; } if(open my $fh, '>', $dumperFile ) { print $fh Dumper $rhDiffResult; } else { warn "WARNING: Could not Open *$dumperFile* ($!)\n"; } Der vollständig Code sollte besser so sein: 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 if( glob($options{output}) ) { my $xmlFile = glob($options{output}); my $dumperFile = "$xmlFile.dmp"; print "\nINFO: Because of some problems with reading the xml file, a hashdump is also performed\n"; print " Name of the dumped hash is: '$dumperFile'\n"; my $xml = $xs->XMLout($rhDiffResult, KeepRoot=>1, NoAttr=>1, AttrIndent => 1 , KeyAttr=>[]); if(open my $fh, '>', $xmlFile ) { print $fh $xml; } else { warn "WARNING: Could not Open *$xmlFile* ($!)\n"; } if(open my $fh, '>', $dumperFile ) { print $fh Dumper $rhDiffResult; } else { warn "WARNING: Could not Open *$dumperFile* ($!)\n"; } } else { my $xml = $xs->XMLout($rhDiffResult, KeepRoot=>1, NoAttr=>1, AttrIndent => 1, KeyAttr => [] ); #$xs->XMLin( $xmlFile, KeepRoot => 1, NormaliseSpace => 1, ForceContent => 1, ForceArray => 1, KeyAttr => [] ); print $xml; } Last edited: 2013-06-12 11:35:35 +0200 (CEST) |