неопределенная переменная в perl
Добавлено: 2014-03-22 15:03:51
здравствуйте.помогите, пожалуйста, с PERLовкой.есть вот такая строка:
после прогона через функцию
переменные $plz и $ort оказываются undefined, причем случайным образом. то есть, при одном запуске срабатывает нормально, при другом лагает.
это моя первая писанина на Perl, поэтому шпиняйте как хотите, только укажите, пожалуйста, на ошибку.
всем заранее спасибо.
Код: Выделить всё
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, поэтому шпиняйте как хотите, только укажите, пожалуйста, на ошибку.
всем заранее спасибо.