Thread Problem in einer fremden Perl-Funktion (3 answers)
Opened by jan999 at 2009-04-02 07:58

jan999
 2009-04-02 07:58
#120152 #120152
User since
2009-04-02
109 Artikel
BenutzerIn
[default_avatar]
Moin !

ich bin aktiv bei OpenStreetMap aktiv und möchte die Analysefunktion eines anderen Mitgliedes der Community nutzen.

Das Problem ist, dass es bei einer der diversen Perl-Funktionen immer zu einem Fehler kommt den selber der Entwickler nicht nachvollziehen kann. Bei Ihm funktioniert es - bei mir nicht. Einzig bekannter Unterschied ist das ich auf Windows arbeite und er auf Linux.

Meine Hoffnung ist nun, dass ein Außenstehender vielleicht eher eine Idee für den Fehler hat als die betroffenen. Ich selber bin noch ein Perl-Greenhorn !

Die Funktion nutzt ein Paket osm.pm aus der auch die Fehlermeldung

Quote
Use of uninitialized value $_ in pattern match (m//) at OSM/osm.pm line 139, <$file> line 11.


stammt.

Die betreffende Zeile habe ich in eine Auszug aus der osm.pm entsprechend markiert, da es zu Zeilenverschiebungen gegenüber der aktuellen Version geben könnte.

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
sub openOsmFile {
$fileName = shift ;

if (grep /.bz2/, $fileName) { $isBz2 = 1 ; } else { $isBz2 = 0 ; }

if ($isBz2) {
$bz = bzopen($fileName, "rb") or die "Cannot open $fileName: $bzerrno\n" ;
}
else {
open ($file, "<", $fileName) || die "can't open osm file" ;
}

nextLine() ;
while ( ! (grep /node/, $line) ) {
nextLine() ; #<<<---- Zeile 139
}
return 1 ;
}
...
sub nextLine {
if ($isBz2) {
$bz->bzreadline($line) ;
}
else {
$line = <$file> ;
}
}


Wenn sich Line 11 auf die auszuwertende Datei bezieht dann sieht diese so aus (die ersten 20 Zeilen):

Quote
<?xml version='1.0' encoding='UTF-8'?>
<osm version="0.5" generator="Osmosis 0.29">
<bound box="35.99000,-5.70000,36.90000,-3.80000" origin="http://www.openstreetmap.org/api/0.5"/>
<node id="10914525" timestamp="2006-07-18T14:29:07Z" user="Nickb" lat="36.4274101" lon="-5.6876476">
<tag k="created_by" v="JOSM"/>
</node>
<node id="10914526" timestamp="2006-07-18T14:29:07Z" user="Nickb" lat="36.4192174" lon="-5.6742741">
<tag k="created_by" v="JOSM"/>
</node>
<node id="10914527" timestamp="2006-07-18T14:29:07Z" user="Nickb" lat="36.4145789" lon="-5.6633103">
<tag k="created_by" v="JOSM"/>
</node>
<node id="10914530" timestamp="2006-07-18T14:29:07Z" user="Nickb" lat="36.4105978" lon="-5.6590398">
<tag k="created_by" v="JOSM"/>
</node>
<node id="10914531" timestamp="2006-07-18T14:29:07Z" user="Nickb" lat="36.4054762" lon="-5.6561667">
<tag k="created_by" v="JOSM"/>
</node>
<node id="10914532" timestamp="2006-07-18T14:29:07Z" user="Nickb" lat="36.4012291" lon="-5.6559169">
<tag k="created_by" v="JOSM"/>


Die Orginal-Dateien finden sich unter Gary68 bei OSM und es geht um die Funktion checkconn.pl

Wäre das Osterei, wenn mir einer weiterhelfen könnte damit ich das Tool auch nutzen kann.

Gruß Jan .-)

View full thread Problem in einer fremden Perl-Funktion