#!/usr/bin/perl use strict; use warnings; my $inputfile = 'C:\test.asc'; open A, $inputfile or die "Cannot open '$inputfile': $!"; my @Buffer = (); while () { push @Buffer, $_; if ($Buffer[-1] =~ /^"\$/) { if (@Buffer <= 1) { warn "Korrupte Daten vor Zeile $."; } else { (my $fn = $Buffer[1]) =~ s~^\s*"([^"]+).*$~$1~; chomp $fn; unless (length $fn) { warn "Kann Dateinamen vor Zeile $. nicht ermitteln."; } else { $fn .= '.csv'; open(OUT, ">$fn") or die "Cannot open '$fn': $!"; print "[DEBUG] '$fn': open ok\n"; for my $ind (0..$#Buffer-1) { print OUT $Buffer[$ind]; } close(OUT) or warn "Cannot close '$fn': $!"; print "[DEBUG] '$fn': close ok\n"; } } @Buffer = (); } }