Thread Textdatei - Mathematische Operationen (22 answers)
Opened by Benji10 at 2011-09-07 11:36

payx
 2011-09-07 15:34
#152188 #152188
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo benji10,

ich würde die Version mit den Subs nehmen: Für jede mathematische Funktion in Deinem Textfile, die nicht zufällig identisch ist mit einer Perl-Funktion, was vermutlich in keinem Fall zutreffen wird, weil Perl Groß- und Kleinschreibung unterscheidet und bei Dir ja alles groß geschrieben ist, machst Du ein sub, das diese Funktion in Perl übersetzt, wie im Beispiel.

Hier dieselbe Lösung mit einer Quelldatei und einer Ausgabedatei:
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
29
30
31
#!/usr/bin/perl

use strict;
use warnings;

# Pfade zu den Dateien
my $infile = 'textfile.txt';
my $outfile = 'textfile_out.txt';

# Dateien öffnen
open my $inFH, "<", $infile or die $!;
open my $outFH, ">", $outfile or die $!;

# Quelldatei auslesen und Ergebnisse in Ausgabedatei schreiben
while (my $txt = <$inFH>) {
    chomp($txt);
    next unless my ($term) = ($txt =~ m/.+=(.+)$/);
    my $result = eval($term);
    print $outFH "$txt=$result\n";
}

close $inFH;
close $outFH;

# Subs ############################################
sub POT {
    return $_[0]**2;
}
sub SQRT {
    return sqrt($_[0]);
}


Beim produktiven Einsatz aber Vorsicht! eval() ist potentiell evil. Wenn in der Quelldatei (nach dem Gleichheitszeichen) irgendwelche Gemeinheiten stehen, dann wird sie Perl ausführen. Verwende diese Lösung also nur, wenn Du volle Kontrolle über die Quelldateien hast. Außerdem wird es nur funktionieren, wenn in Deiner Quelldatei keine Klammerfehler o.ä enthalten sind.

HTH
Grüße
payx

View full thread Textdatei - Mathematische Operationen