Also perl ist ja jetzt nicht so schwierig, aber nichts desto trotz ist man doch immer froh wenn mal jemand schreibt, was man so falsch machen kann.
Hier ein perl file um einen String zu erzeugen, der mit gnuplot verarbeitet werden kann. (Ein plot Befehl)
#!/usr/bin/perl use strict;# Ohne strict, kann man beliebige Variablen # verwenden ohne sie zu deklarieren. Das ist sehr Fehleranfällig use warnings;# Das hilft immer my @array=(); # Deklariere und initialisiere leeres Array print "File name to wirte commands\n"; my $dateiname = <>; # Ok das war einfach <> ist eine Abkürzung für <STDIN> # also die Eingabe von der Konsole (return um abzuschließen) print "Please choose source table name\n"; my $fname=<>; chomp($fname); # Ich schneide überschüssige newlines ab while(1){# Eigentlich eine Endlosschleife # Bei perl heißt break last # Das ist ein input handlig zu Fuß print "Do you want me to\n 1. let you list the array or\n 2. compute the array? \n"; my $comp=<>; if($comp==1){ # Ok if Bedingungen ist echt kein Problem mit perl print "The Array please\n The numbers given will repersent the rows to be printed\n Please separate the values by blank and confirm with enter\n"; @array = split(/\s+/, <>); # Jetzt wirds Haarig: im Normalfall # @array=<>; wird jedes Element des Arrays mit return bestädigt und das Array mit crtl-D # beendet. Mit dem split Konstrukt kann ich nun schreien E1 E2 .. En return print "Using folowing numbers\n"; print @array."\n"; last;# Wie gesagt break heißt hier last } if($comp==2){ print "Compute Mode\n Give me a start value (row \#) \n"; my $startv=<>; print "End Value\n"; my $endv=<>; print "step\n"; my $stepv=<>; for(my $i=$startv; $i<=$endv;$i+=$stepv+1)# n Bissle inkrement dekrement tweaking { my $tmpii=$i+1; # Ich weis nicht genau warum aber man kann nicht einfach schreien $i+1 push(@array, ($i,$tmpii)); } print "This will be the last value:\n".$array[$#array]."\n"; # $#array das letzte # Element eines arrays aus. Auch geht: $array[@array-1] (Länge minus 1) last; }else{print "Say 1 or 2\n";} # Ok das ist die Schleife für das Input-Handling (type 3) } chomp(@array); #print @array;#for debug if(@array%2 == 0 ){ my $mystring="plot'".$fname."' u" .$array[0].":".$array[1];# Ok das ist das Zusammenschnipseln # das Strings . ist der Stringverküpfer chomp($mystring); if(@array>2){ for(my $i=2;$i<@array;$i+=2 ){ my $tmpi=$i+1; my $tmps=",'' u".$array[$i].":".$array[$tmpi]; chomp($tmps); $mystring=$mystring.$tmps;# Ja gut das kennt man string = string bisher . anderer string } } print "The following command represents the graph:\n".$mystring."\n"; open(OUT, ">$dateiname") || die $!; # Datei zum Schreiben öffnen OUT muss groß sein print OUT $mystring; close(OUT); }else{print "Array must have a even number of elements. Skipping everything \n"} # You never know |