mrks: Verschachtelte for-each Schleifen mit s///

Beitrag lesen

Schönen guten Abend,

Erstmal: Benutze use strict;.
Was genau funktioniert denn nicht bzw. was funktioniert bei dir im moment? Matcht $var1 die Zeile nicht? Findet keine Ersetzung statt?

»» print OUTPUTDATEI $_;
Du weisst, dass du in die OUTPUTDATEI den Dateiinhalt der INPUTDATEI in der Menge der Zeilen der Datei schreibst?

»»

Das Problem ist gelöst. Tatsächlich funktioniert folgender Code:

  
#!usr/bin/perl  
use utf8;  
use warnings;  
use strict;  
  
  
open INPUTDATEI, "<", "e:\\---.txt" || die "Datei nicht geoeffnet, weil: $!";  
open ZWEITEINPUTDATEI, "<", "e:\\----test.txt" || die "Datei nicht geoeffnet, weil: $!";  
open OUTPUTDATEI, ">", "e:\\----.txt" || die "Datei nicht geoeffnet, weil: $!";  
  
my @inputdatei = <INPUTDATEI>;  
my @zweiteinputdatei = <ZWEITEINPUTDATEI>;  
foreach (@zweiteinputdatei){  
	my $var1 =$_;  
	#chomp $var1;  
						foreach (@inputdatei)  
						{  
										  
										$_=~s#$var1#TEST#;  
										my $var2 = $_;  
										print OUTPUTDATEI "$var1"."-------->"."$var2\n";  
						}  
}

Das Problem war nicht die Variableninterpolation (funktioniert auch ohne \Q). Vielmehr war tatsächlich (wie von Beat vermutet) das Line-Feed am Ende Schuld, dass kein match stattfand. chomp $var1 hat jedenfalls nicht funktioniert und das line-feed wie erhofft entfernt. oder es hat nur das line feed und nicht das newline entfernt (sind in windows doch unterschiedliche sachen oder?).

Vielleicht kannst Du Deinen Satz:

Du weisst, dass du in die OUTPUTDATEI den Dateiinhalt der INPUTDATEI in >>der Menge der Zeilen der Datei schreibst?

noch erläutern. Ist zwar für das konkrete Problem u.U. unerheblich aber interssiert mich trotzdem.

vielen dank für eure hilfe!

mfg
mrks