#!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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert