#!perl #Name: radius1.pl #Beschreibung: Radius berechnen #Datum #use strict; #deklartation der variablen $radius=12.5; $d=2*$radius; $umfang=$d*3.14; print "Der Umfang betraegt ",$umfang; #--------------------------------------------- print "\nRadius berechnen durch Eingabe\n"; print "Radius eingeben: "; $d=2*<STDIN>; $umfang=$d*3.14; print "Der Umfang betraegt ",$umfang; <STDIN>
#!perl #Name: einmaleins.pl #Beschreibung: Einmaleins berechnen #use strict; $zahl1=1, $zahl2=1; do{ do{ print $zahl1," x ",$zahl2," = ",$zahl1*$zahl2,"\t \t"; $zahl2++; } until ($zahl2>10); $zahl2=1; $zahl1++; print "\n"; } until ($zahl1>10);
#!perl #Name: Sternchen.pl #Beschreibung: Sternchen ausgeben #Datum 27.09.2012 #use strict; print "Bitte Anzahl der Sternchen eingeben: "; chomp($eingabe=<STDIN>); $stern=$eingabe; $zeile=0; #print "*" x $eingabe, "\n\n\n"; while($eingabe>0){print "*" x $eingabe, "\n"; $eingabe--}; sleep(5); while($zeile<$eingabe){ while($stern>0){ print "*"; $stern--; } print "\n"; $zeile++; $stern=$eingabe-$zeile; }
#!perl #Name: Eingabeabbruch.pl #Beschreibung: Bei q oder STRG-Z Eingabe abbrechen #Datum 27.09.2012 #use strict; $min=0, $max=0, $summe=0, $zaehler=0; do{ $zaehler++; #Berechnungen durchführen: $max=$eingabe if($max<$eingabe); print "Maximum: ", $max, "\n"; $min=$eingabe if($min>$eingabe); print "Minimum: ", $min, "\n"; $summe+=$eingabe; print "Summe: ", $summe, "\n"; print "Durchschnitt: ", $summe/$zaehler, "\n"; #Berechnungen durchgeführt print "Bitte eine Zahl eingeben: "; chomp($eingabe=<STDIN>); $min = $max = $eingabe if($zaehler==1); system("cls"); }until($eingabe eq "q" || $eingabe eq "^Z");
#!perl #Name 2012_10_11_statistics.pl #Beschreibung: ... #use strict; #Deklaration my @zahlen; $i=0; do{ print "Eingabe Zahl: "; chomp($eingabe = <STDIN>); #q nicht ins Array schreiben: if($eingabe ne "q"){ #Eingabe in Array eintragen: $zahlen[$i]=$eingabe; #Summieren $summe+=$zahlen[$i]; #Zähler hochsetzen $i++; } system("cls"); }until($eingabe eq "q" ); #Mittelwert berechnen $mittelwert=$summe/$i; #Für jeden Wert im Array @zahlen: foreach $wert(@zahlen){ #Differenz jeder Eingabe zum Mittelwert $messwert=($wert-$mittelwert)*($wert-$mittelwert); #Temporärer Wert: $temp+=$messwert; } #Varianz: Wurzel aus Summe der Messwerte geteilt durch Anzahl der eingebenen Zahlen $varianz=sqrt($temp/$i); #Array sortiern: @zahlen=sort(@zahlen); #Ausgabe: print "Zahlen im Array: "; foreach $wert(@zahlen){print $wert, " ";}; print "\nAnzahl der Zahlen: ", @zahlen.length, "\n"; print "kleinster Wert: ", $zahlen[0], "\n"; print "groesster Wert: ", $zahlen[$#zahlen], "\n"; print "Summe: "; $summe, "\n"; print "Mittelwert: ", $mittelwert, "\n"; print "Varianz: ", $varianz, "\n"; print "gerade Zahlen: "; foreach $wert(@zahlen) { if($wert%2==0.0){ print $wert, " ";}; }; print "\nungerade Zahlen: "; foreach $wert(@zahlen) { if($wert%2>0.0){ print $wert, " ";}; };
#!perl #Name datei.pl #Beschreibung: #use strict; @array = qw{a b c x}; foreach(0..$#array){ if($array[$_] eq 'x'){ print $_." ist Enthalten"; last; } }
#!perl #Name 2012_10_18_subroutinen.pl #Beschreibung: Subroutinen - Berechnung der Teiler einer Zahl #use strict; #Zahl einlesen lassen, durch Subroutine: chomp($eingabe=&eingabe); #Teiler berechnen: &teiler($eingabe); sub eingabe{ print "Bitte eine Zahl eingeben: "; return <STDIN>; } sub teiler{ my($zahl)=$_[0]; #call bei value $i=1; while($i<=$zahl){ unless($zahl%$i){ $teiler[@teiler]=($zahl/$i); } $i++; } &ausgabe(@teiler); } sub ausgabe{ print "Ausgabe Index 0:"; print $_[0]."\n"; #Nummerisch sortieren: @_=sort{$a<=>$b}(@_); #call by reference #Array ausgeben: foreach $k(@_){print $k," ";}; #Primzahl: if(primi($_[0])){ print "Primzahl"; } else { print "keine Primzahl"; } } sub primi{ for($i=2; $i<$_[0]; $i++){ if(($_[0]%$_)==0){ return 0; } } return 1; }
#!perl #Name 2012_10_25_Filehandle.pl #Paramter: 2012_10_25_Filehandle.pl [INHALTSORDNER] [AUSGABEDATEI] #[INHALTSORDNER] = wenn nicht existierend wird er erstellt #[AUSGABEDATEI] ohne .txt #Beschreibung: Ordner prüfen, Textdateien abspeichern use strict; my $pfad = $ARGV[0]; my $ausgabe = $ARGV[1]; &verzeichnis_pruefen($pfad); chdir($pfad); &test_dateien_anlegen; chdir(".."); &augabedatei_fuellen($ausgabe, $pfad); #---- START SUBROUTINEN -------- sub augabedatei_fuellen{ # Ausgabedatei erstellen und schreiben mit Anhängen öffnen: open (AUSGABEDATEI, ">>",$_[0].".txt") or die "Ausgabedatei".$_[0]."konnte nicht estellt werden"; opendir(DIR, $_[1]) or die "Ordner ".$_[1]." konnte nicht geöffnet werden"; #Ordner öffnen my @dateien = readdir(DIR); #Alle Dateien des Ordners in Array schreiben: READDIR chdir($_[1]); #der Pfad muss wieder geändert werden, damit in dem Ordner gelesen werden kann foreach my $dat(sort@dateien){ unless($dat eq "." or $dat eq ".."){ #ausschliessen von VZ . und .. open (EINGABE, "<",$dat) or die "Konnte Datei ".$dat." nicht lesen"; #Datei lesend öffnen chomp(my @inhalt=<EINGABE>); #Inhalt in ein Array schreiben close(EINGABE); #Datei wieder schliessen print AUSGABEDATEI $inhalt[0]."\n"; #Zeile 1 in Ausgabedatei schreiben print "Schreibe Zeile '",$inhalt[0], "' ... erledigt\n"; print AUSGABEDATEI $inhalt[$#inhalt]."\n"; #letzte Zeile in Ausgabedatei schreiben print "Schreibe Zeile '",$inhalt[$#inhalt], "' ... erledigt\n"; } } close (AUSGABEDATEI); #Ausgabedatei wieder schliessen closedir(DIR); #Ordner wieder schliessen print "Ausgabedatei erstellt\n"; } #--START--- Verzeichniss prüfen und anlegen ------ sub verzeichnis_pruefen{ if(opendir(ORDNER, $_[0])){ #existiert der Ordner /lässt er sich öffnen print "Ordner '".$_[0]."' existiert bereits\n"; closedir(ORDNER); #Ordner existiert -> wieder schliessen }else{ &verzeichnis_anlegen($_[0]); #nicht existent -> anlegen } } sub verzeichnis_anlegen{ print "Verzeichnis '", $_[0], "' existiert nicht!\nErstelle Verzeichnis: "; if(mkdir($_[0],0777)){ #Ordner anlegen print "Ordner wurde angelegt!\n"; } else { print "Konnte Ordner nicht anlegen!\n"; } } #--ENDE--- Verzeichniss prüfen und anlegen ------ #--START--- Testdateien anlegen ------ sub test_dateien_anlegen{ my @Verzeichnisbaum = ("a.txt", "b.txt", "c.txt"); #Array mit Testdateien foreach my $dat(@Verzeichnisbaum){ #Für alle Einträge im Array unless(open(TEXTDATEI, "<",$dat)){ #Überprüfen ob die Datei schon existiert.. wenn nicht anlegen: open(TEXTDATEI, ">",$dat) or die "Datei ",$dat," konnte nicht angelegt werden\n"; #Schreibend öffnen for(my $i=1; $i<=10; $i++){ print TEXTDATEI "Testdatei ".$dat." Zeile ".$i." \n"; #In Datei schreiben } close(TEXTDATEI); #Datei wieder schliessen print "Datei ",$dat," angelegt\n"; } } } #--ENDE--- Testdateien anlegen ------
#!perl #Name 2012_11_08_SA1_Aufgabe1.pl #Beschreibung: siehe Aufgabe 1 print "Bitte String1 eingeben:\n"; chomp(my $text1=<STDIN>); print "Bitte String1 eingeben:\n"; chomp(my $text2=<STDIN>); my $text=$text1.$text2 x 10; print $text;
#!perl #Name 2012_11_08_SA1_Aufgabe2.pl #Beschreibung: siehe Aufgabe 2 use strict; my @woerter; my $eingabe; #hier oben deklarieren da es in chomp zu Problemen kommt do{ print "Bitte ein Wort eingeben:\n"; chomp($eingabe=<STDIN>); #Hinten am Array dranhängen: #push(@woerter,$eingabe); #oder $woerter[$#woerter+1]=$eingabe; }until($eingabe eq ""); #letzte Leerzeile aus dem Array schmeißen: pop(@woerter); #Alphabetisch sortieren: @woerter=sort(@woerter); print "Es wurden ".@woerter." Woerter eingegeben:\n"; #Inhalt des Arrays ausgeben: foreach my $inhalt(@woerter){ print $inhalt."\n"; } #Inhalt des Arrays mit Angabe des Indexes ausgeben: for(my $i=0; $i<@woerter; $i++){ print $i." = ".$woerter[$i]."\n"; }
#!perl #Name 2012_11_08_SA1_Aufgabe3.pl #Beschreibung: siehe Aufgabe 3 use strict; my $eingabe; my @a_farben_schluessel; my %h_farben = (); #my $h_farben=("black","000000","red","FF0000"...); #oder $h_farben{"black"}="#000000"; $h_farben{"red"}="#FF0000"; $h_farben{"yellow"}="#FFFF00"; $h_farben{"blue"}="#0000FF"; $h_farben{"white"}="#FFFFFF"; $h_farben{"brown"}="#A52A2A"; $h_farben{"orange"}="#FFA500"; $h_farben{"green"}="#008000"; do{ print "Bitte Farbe eingeben: "; chomp($eingabe=<STDIN>); #Prüfen ob die Eingabe als Schlüssel vorhanden ist: if (exists $h_farben{$eingabe}){ print "Die Farbe ".$eingabe." besitzt den HEX-Wert: ".$h_farben{$eingabe}."\n"; }else{ print "Farbe existiert nicht!!!\n"; #Sortiere Hash-Liste und gebe das Array danach aus: foreach my $key(sort keys %h_farben){ #push @a_farben_schluessel, ($key, $h_farben{$key}); #Was tut das???? print $key." hat den Wert ".$h_farben{$key}."\n"; } } }until($eingabe eq "q");
#!perl #Name 2012_11_08_SA1_Aufgabe4.pl #Beschreibung: siehe Aufgabe 4 use 5.16.0; #benötigt für "given" use strict; my $option = $ARGV[0]; my $datei1 = $ARGV[1]; my $datei2 = $ARGV[2]; my $operator = ">"; given($option){ $operator=">>" when "-a"; &hilfe when "-h"; default {$datei2 = $datei1; $datei1 = $option;} } print "Soll die Datei ".$datei1." mit dem Operator ".$operator." in die Datei ".$datei2." kopiert werden? (j/n)"; my $abfrage; chomp($abfrage=<STDIN>); if($abfrage ne "j"){ print "Kopiervorgang abgebrochen! Hilfe mit dem Aufruf -h"; exit; } else { &kopieren($datei1,$datei2,$operator); } sub kopieren{ open(DATEI1,"<",$_[0]) or die "Konnte Datei ".$_[0]." nicht finden!"; my @inhalt=<DATEI1>; #Inhalt von DATEI1 in das Array @inhalt schreiben lassen close(DATEI1); open(DATEI2, $_[2], $_[1]) or die "Konnte Datei ".$_[1]." nicht öffnen!"; print DATEI2 @inhalt; #Kompletten Inhalt wieder in DATEI2 schreiben close(DATEI2); print "Kopiervorgang erfolgreich beendet!"; } sub hilfe{ print "Hier gibt es die Hilfe!!!\nMuss allerdings von irgendeiner schlauen Person noch geschrieben werden!\n"; exit; }
Lösungen zu Perl