#!/usr/bin/perl

# Fügt Dateien zu einer neuen zusammen.

# Inhalt des Buffers sofort schreiben
$| = 1;

if($ARGV[0]) {
	if(open(LISTE,$ARGV[0])) {
		@input=<LISTE>;
		close(LISTE);
	}
}

# Wie soll die Zusammengefügte Datei heissen?
if(!$ARGV[1]){
	print "\n\nGeben Sie die Datei für die zusammenzufügenden Teildateien an: ";
	$output = <STDIN>;
	chomp($output);
	print "\n";
}else{
	$output = $ARGV[1];
}
 
# Die jeweils angegebenen Teildateien werden eingelesen und angehängt.
if(defined(open (FILE, $output))) {
	close (FILE);
	print "\nSoll die Datei ".$output." überschrieben werden (J/N) oder weiteres angeängt werden (A)?: ";
	$weiter = <STDIN>;
	while (! ($weiter =~ /^(j|n|a)\n/i)) {
		print "\nSoll die Datei ".$output." überschrieben werden (J/N) oder weiteres angeängt werden (A)?: ";
		$weiter = <STDIN>;
	}
	chomp($weiter);
} else {
	$weiter = "j";
}
if ($weiter =~ /(j|a)/i) {
	if ($weiter =~ /j/i) {
		if (!open(JOINED,">$output")) {
			print "\nAbbruch: Die Datei \"".$output."\" konnte nicht erstellt werden!\n";
			exit(0);
		}
	} else {
		if (!open(JOINED,">>$output")) {
			print "\nAbbruch: Die Datei \"".$output."\" konnte nicht erstellt werden!\n";
			exit(0);
		}
	}
	$lesen=1;
	$lauf=0;
#	$zeilen=0;
	@input;
	while ($lesen) {
		if(!$input[$lauf]) {
			print "\n\tGeben Sie die ".($lauf+1).". Datei an: ";
			$input[$lauf] = <STDIN>;
			chomp($input[$lauf]);	
			print "\n";
		} else {
			chomp($input[$lauf]);
		}
		if ($input[$lauf]) {
			if (open(INPUT,$input[$lauf])) {
				while (<INPUT>) {
					print JOINED $_;
#					$zeilen++;
#					if ($zeilen==1000) {
#						close(JOINED);
#						open(JOINED,">>$output");
#						$zeilen==0;
#					}
				}
				close(INPUT);
				print "Die ".($lauf+1).". Datei \"".$input[$lauf]."\" wurde an \"".$output."\" angefügt.\n";
			} else {
				print "Abbruch: Die ".($lauf+1).". Datei konnte nicht geöffnet werden!\n";
				close(JOINED);
				exit(0);
			}
			$lauf++;
		} else {
			$lesen=0;
			if (!$lauf) {
				print "Hinweis: Es wurden keine (weiteren) Dateien zum Zusammenfügen angegeben!\n\n";
				close(JOINED);
				exit(0);
			}
		}
	}
	close(JOINED);
	if ($lauf>1) {
		print "\nDie ".($lauf)." Datei(en) \"".$input[0]."\" ";
		for $lauf1 (1 .. @input-1) {
			if ($lauf1<$lauf-1) {
				print "\"".$input[$lauf1]."\", ";
			} else {
				print "und \"".$input[$lauf1]."\" ";
			}
		}
		print "wurde(n) zu \"".$output."\" zusammengefügt.\n\n";

	} else {
		print "\nDie Datei \"".$input[0]."\" wurde zu \"".$output."\" hinzugefügt.\n\n";

	}
} else {
	print "\nAbbruch: Die Datei \"".$output."\" wurde nicht überschrieben!\n";
	exit(0);
}

