Код: Выделить всё
id="545931" lat="48.7072377" lon="9.6465332" version="6" timestamp="2009-08-17T07:50:21Z" changeset="2174074" uid="110363" user="Frank9652";k="addr:city" v="G?ppingen";k="addr:country" v="DE";k="addr:housename" v="Kreis-Medien-Zentrum & Radiofips";k="addr:housenumber" v="22";k="addr:postcode" v="73033";k="addr:street" v="Eberhardstra?e"
Код: Выделить всё
sub parse {
my($string)=@_;
my $lat = "UnDefine";
my $lon = "UnDefine";
my $ort = "UnDefine";
my $plz = "UnDefine";
$csv = "";
if ($string =~ m/"addr:postcode"/) {
if ($string =~ m/"addr:city"/) {
$string =~ s/<node //;
$string =~ s/><tag//;
$string =~ s/\/><tag//g;
$string =~ s/\/>//;
$string =~ s/ k/;k/g;
#print $string."\n";
my @arr = split(/;/,$string);
foreach my $element (@arr) {
my @L = split(/ /,$arr[0]);
foreach my $l(@L) {
$L[1] =~ s/lat="//;
$L[1] =~ s/"//;
$lat = $L[1];
$L[2] =~ s/lon="//;
$L[2] =~ s/"//;
$lon = $L[2];
}
if ($element =~ m/"addr:city"/) {
for ($element) {
s/k="addr:city" v="//;
s/"//;
}
# #$element =~ s/k="addr:city" v="//;
# #$element =~ s/"//;
$ort = $element;
}
if ($element =~ m/"addr:postcode"/) {
for ($element) {
s/k="addr:postcode" v="//;
s/"//;
}
# #$element =~ s/k="addr:postcode" v="//;
# #$element =~ s/"//;
$plz = $element;
}
$csv = $lat.";".$lon.";".$plz.";".$ort."\n";
#print $csv;
}
}
}
return $csv;
}
это моя первая писанина на Perl, поэтому шпиняйте как хотите, только укажите, пожалуйста, на ошибку.
всем заранее спасибо.