1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
open IN,"<$input"; open OUT,">./$output/Molekuehl$i.sdf"; while (<IN>){ $j=0; if ($_ eq "\$\$\$\$"){ $i++; close OUT; open OUT,">./$output/Molekuehl$i.sdf"; $j=1; } if ($j==0){ print OUT "$_\n"; } } close IN; close OUT;
1 2 3 4 5 6
... while (<IN>){ $j=0; chomp; #Newline entfernen if ($_ eq "\$\$\$\$"){ ...
1 2 3 4 5 6
... while (<IN>){ $j=0; chomp; #Newline entfernen if ( m{^\$\$\$\$} ){ ...
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;