Thread Parameter umwandeln (55 answers)
Opened by Benji2010 at 2010-12-13 12:04

Gast benji2010
 2010-12-20 11:27
#143723 #143723
erstmal sorry an die Admins..war wohl ein wenig ungeduldig...

Du hast Recht..Mit einem ganzzahligen Wert funktionierte der Quellcode.
Wenn ich jetzt allerdings diesen Code einfüge:

Code: (dl )
if ( $tmp_val =~ m:^[0-9.()*/+-]+$/: ) {


lässt er die Parameter sowohl bei ganzzahligen, als auch bei Dezimalzahlen stehen...

Folgender Code hat ja bereits funktioniert:

Code: (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/perl
use strict;
use warnings;
my %vars;
while(my $line=<DATA>)
{
# Zeile berechnen wenn Rexexp matched
my @calc;
$line=~s/(\w+)=(\S+)/push(@calc,[$1,$2]); $_="##$#calc##"/eg;
# etwas gefunden
if(@calc)
{
for(0..$#calc)
{
my $k=$calc[$_][0];
my $v=$calc[$_][1];

# es ist ein Berechnung
if($v=~/^(?:R|-|\+|\d)/)
{
# variablen durch konstante ersetzen
$v=~s/(R\d+)/$vars{$1}/g;

# berechnen
$v=eval($v);
}

# variablenzuweisung
$vars{$1}=$v if($k=~/(R\d+)/);

# Ersetzung Rückgängig machen
$line=~s/##$_##/$k=$v/g;
}
}

# Zeile Ausgeben
print $line;
}

__DATA__
N3070 MSG ( "TEST")
N3080 G95 S100 M3 f0.2
N3090 G0 Z200
N3100 X=0 Y=-630 C=DC(0)
N3110 M8
N3120 R12=30
N3121 R14=40
N3122 X=R12+R14
N490 R53=800 R52=50
N500 X=R53 Y=-R52-40
N609 R23=100 R53=10
N610 R24=R23/(R53*2)


Ich wollte jedoch nur, dass Data nicht in der .Pl Datei steht sondern das ich dies extern einlesen kann...
Last edited: 2010-12-20 11:45:11 +0100 (CET)

View full thread Parameter umwandeln