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

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Olegro
проходил мимо

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

Непрочитанное сообщение Olegro » 2014-03-22 15:03:51

здравствуйте.помогите, пожалуйста, с 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, поэтому шпиняйте как хотите, только укажите, пожалуйста, на ошибку.
всем заранее спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/