String manipulation und Array Handling in perl

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
Dieser Beitrag wurde unter perl abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Required fields are marked *

*

You may use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>