problem mit den regex...

LrIuNlUzX

Mitglied
der folgende code sollte eigentlich eine datei duchsuchen, und wenn er auf einen string stößt, der ein dateiname ist, der in & zeichen eingeschlossen, sich selber nochmal aufrufen und den inhalt der neuen datei anstatt des strings ersetzen. soweit so gut, das geht auch, nur bricht er die while schleife ab, sobalt die funktion sich selbst aufrut. wieso?

kann mir da jemand weiterhelfen?


Code:
sub create {
	my ($self, $file) = @_;

	my $content;
	
	open FILE, $file);
	while (<FILE>) {
		$_ =~ s/\&(\w+)\&/$self->create($1)/ge;
		$content .= $_;
	}
	
	return $content;
}
 
Du fängst bei open keine Fehler ab, es fehlt außerdem eine runde Klammer, Du machst kein close...
 
Code:
sub create {
	my ($self, $file) = @_;
        local *FILE;

	my $content;
	
	open FILE, $file || 'error';
	while (<FILE>) {
		$_ =~ s/\&(\w+)\&/$self->create($1)/ge;
		$content .= $_;
	}
	close FILE;
	return $content;
}

es geht jetzt...
Es lag daran, dass das Dateihändel global war. das wurde über local behoben...

danke nochmals
 
Zuletzt bearbeitet:
Zurück