Thread Probleme mit If Bedingung (4 answers)
Opened by guertelschnalle2 at 2011-09-28 16:10

Dubu
 2011-09-29 00:04
#152741 #152741
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Und wie wär's, einfach die Dollars als Datensatztrenner zu benutzen?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl
use strict;
use warnings;

my $inputfilename  = 'MeineEingabedatei.dat';
my $outputdir      = 'MeinAusgabeVerzeichnis';

open my $in, '<', $inputfilename or die "$inputfilename: $!\n";

$/ = '$$$$'; # Datensatztrenner

my $i = 0; # Zähler für Dateinamen auf Null initialisieren
while (my $block = <$in>) {
    chomp $block; # Datensatztrenner abschneiden

    # Ausgabedateinamen formatieren, dreistellige Zahl mit führenden Nullen
    my $outfilename = sprintf ("./%s/Molekuel%03d.sdf", $outputdir, $i);

    # Block in Datei schreiben
    open my $out, '>', $outfilename
        or die "Ausgabe in $outfilename nicht möglich: $!\n";
    print $out $block;
    # Das Schließen kann z.B. schief gehen, wenn zwischendurch die Platte vollläuft
    close $out or die "Schließen von Molekuel$i.sdf nicht möglich: $!\n";

    ++$i;
}
close $in;

Ich habe noch eine Formatierung der Ausgabedateinamen mit führenden Nullen hinzugefügt, was praktischer ist, wenn es mehr als zehn sind.
(Und Molekül schreibt sich ohne h.)

View full thread Probleme mit If Bedingung