Страница 1 из 1

неопределенная переменная в perl

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