ubuntuusers.de

Perl Programmieren-Grundlagen

Status: Gelöst | Ubuntu-Version: Ubuntu 14.10 (Utopic Unicorn)
Antworten |

davidik

Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: Zähle...

Sehr geehrte Perl Nutzer und Versteher,

Ich mag diese Programmiersprache nur leider weiß ich zu wenig davon und wollte fragen wie so Grundlagen funktionieren wie etwa Einlesen, Zählen, Addieren etc. funktioniert ich habe ein paar Beispiele

Ich würde gerne eine .dat datei erstellen, bei welcher 20 Zeilen mit jeweils 100 Ziffern enthalten sein sollen. Ich will mit dieser .dat Datei folgendes anstellen

- den Inahlt der Datei einlesen und jede einzelne Zeile die Summe bilden für alle 100 Zahlen

- Das Ergebnis soll im Terminal folgendermaßen ausgegeben werden → Summe Zeile 1: ... Summe Zeile 2: etc.

- Einen Test für die Subroutine schreiben, welche 2 Durchführungen ausführt bzw. automatisch mir diese Operation berechnet

- Die Zählsubroutine+Test soll so verändert werden das statt der einfachen Summe die alternierende Summe jeder Zeile gebildet wird,sprich : alternierende Summe von 19423 ist 5 = 1+9-4+2-3=5

wichtig ist hierbei das ich verstehe wie die subroutine so im großen und ganzen funktioniert

mfg David

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Klingt irgend wie nach Hausaufgaben... ❗

Was hast Du denn schon so probiert?

Mal ehrlich: Das klingt alles *sehr* trivial und sollte auch von einem Anfänger zu lösen sein. Man muss sich natürlich bemühen 😉

davidik

(Themenstarter)
Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: 42

Naja also erstmal will ich eine Datei mit Zeichen erstellen können wie Buchstaben oder Zahlen also 5 Ziffern pro 20 Zeilen wie in der Aufgabe lautet und diese dann als .dat speichern dann weiß ich nicht wie einlesen geht also READ( und was kommt dann und wie funktioniert das mit dem Zeilenumbruch chomp nochmal ? und ja dann weiß ich garnicht mehr wie addition geht also ich addiere doch nicht alle 100$ miteinander sondern Zeile für Zeile damit ich ja die Summe dann anschließend habe ebenso wie bei alternierende Summe und für Testdurchläufe habe ich garkeine Ahnung

sowas ähnliches wollte ich mit der fibonacci-Berechnung von Zahlen iterativ,rekursiv und vor allem Dynamisch programmieren, dabei brauche ich aber nochmehr Hilfe

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

davidik schrieb:

Sehr geehrte Perl Nutzer und Versteher,

Ich mag diese Programmiersprache nur leider weiß ich zu wenig davon

Ich schreibe normalerweise weder selbst Skripte in Perl noch kann ich von mir behaupten, dass ich alle Feinheiten der Sprache verstehe (meistens habe ich das zweifenhafte Vergnügen fehlerhafte Perl-Skripte durchzusehen und zu fixen oder zu ersetzen), aber wie kann man behaupten, dass man eine Sprache mag, wenn man nicht mal die grundlegende Syntax kennt?

und wollte fragen wie so Grundlagen funktionieren wie etwa Einlesen, Zählen, Addieren etc. funktioniert

Die Dokumentation und eine Einführung in Perl, die das behandelt, ist doch sehr einfach zu finden: http://perldoc.perl.org/perlintro.html

davidik

(Themenstarter)
Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: 42

Bei mir hat es schon gescheitert beim anlegen mit mkdir auf Schreibtisch ich habe danach eine Leerzeile also dieses ">" Zeichen und ja weiß dann nicht was ich machen soll

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Hast du eventuell mkidir einen Pfad mit führendem Anführungszeichen übergeben und das abschließende Anführungszeichen vergessen? Also z.B. so:

1
mkdir "/home/user/Schreibtisch/perl

statt

1
mkdir "/home/user/Schreibtisch/perl"

Das kann natürlich auch mit anderen Zeichen passieren, die die Shell besonders interpretiert, in dem Fall würde ich http://www.tldp.org/LDP/Bash-Beginners-Guide/html/ als Lektüre empfehlen.

davidik

(Themenstarter)
Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: 42

@seahawk ich habe vor ein paar Jahren mit einer etwas anderen Version gearbeitet und irgendwie kommt es mir jetzt etwas Anders vor als damals, also ich habe die Befehle alle wieder vergessen und brauche meine Zeit ehe ich mich wiedereinfinde und deshalb stelle ich auch solche Fragen damit bei mir alles Idiotensicher klappt ! Ich meine als ich früher zuerst

ls

dann

cd Schreibtisch 

dann

mkdir Perldokumente 

dann

chmod u+x

gemacht habe alles keine Anführungszeichen benötigt hat

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Ja, das sollte eigentlich ohne Anführungszeichen funktionieren. Aber den ">" Promt von der Bash bekommt man normalerweise, wenn sie eine mehrzeilige Eingabe erwartet, weil die vorangegangene Zeile syntaktisch nicht abgeschlossen wurde.

davidik

(Themenstarter)
Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: 42

ja ok ich verstehe ☺ aber ich habe die befehle genauso halt eingetippt und das nächste was ich dann gemacht hätte wäre

gedit perl.pl 

das akzeptiert der ja nicht und was kann man da nun tun wenn sowas kommt

davidik

(Themenstarter)
Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: 42

lol es funktioniert ! also

1
 mkdir perl dokumente
1
chmod u+x perl dokumente

hat er alles gerade ganz normal ausgeführt also manchmal bin ich entweder unaufmerksam oder ich bin zu dumm um den Fehler zu Sehen

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

davidik schrieb:

lol es funktioniert ! also

1
 mkdir perl dokumente

Das ist aber ganz was anderes als

1
mkdir Perldokumente

weil es im aktuellen Verzeichnis die beiden Ordner "perl" und "dokumente" erzeugt.

1
chmod u+x perl dokumente

Den Sinn von diesem Befehl verstehe ich auch nicht, denn normalerweise hat dein User sowieso Ausführungsrechte für die angelegten Ordner, sonst dürfte er weder reinschauen noch Dateien darin anlegen.

hat er alles gerade ganz normal ausgeführt also manchmal bin ich entweder unaufmerksam oder ich bin zu dumm um den Fehler zu Sehen

Du scheinst gerne ein bisschen ungenau zu formulieren, in dem ersten Post hast du auch erst von 100 Ziffern in einer Zeile gesprochen und ein paar Zeilen später waren es dann 100 Zahlen.

davidik schrieb:

ja ok ich verstehe ☺ aber ich habe die befehle genauso halt eingetippt und das nächste was ich dann gemacht hätte wäre

gedit perl.pl 

das akzeptiert der ja nicht und was kann man da nun tun wenn sowas kommt

Abgesehen davon, dass der Dateiname nicht besonders hilfreich ist zu beschreiben, was die Datei enthält - Was ist denn der genaue Wortlaut der Fehlermeldung?

davidik

(Themenstarter)
Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: 42

1
chmod u+x 

habe ich gemacht, wegen den Rechten, nur so ☺ tut jetzt auch nichts zur sache, das brauche ich aber halt

bei

1
mkdir 

kam bei mir immer dieser ">" prompt, deshalb war ich sehr irritiert also ich wollte einfach nur einen Ordner anlegen, habe auch gemerkt das ich dann 2 angelegt habe weil ich die nicht zusammengeschrieben habe, die Namen

es kam keine fehlermeldung nur der "prompt" und jetzt ist aber alles ok aber nun gut ich habe wieder etwas mehr Gefühl in der Sache gekriegt

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Tippst du die Befehle eigentlich selbst ein oder kopierst du die aus irgendwelchen Dokumenten? Nicht dass da noch Windows-Zeilenenden oder ähnliches in der Shell landen...

davidik

(Themenstarter)
Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: 42

wie kommst du drauf ?

davidik

(Themenstarter)
Avatar von davidik

Anmeldungsdatum:
20. November 2014

Beiträge: 42

also wie soll ich das jetzt machen wenn ich jetzt habe :

1
2
3
4
5
6
7
#!/usr/bin/perl -w -l
use strict;
use warnings;

open (100Zahlen, "100Zahlen.dat") or die $!;
	my @Zahlen = <100Zahlen>;
close (100Zahlen);

ich will ja jede zeile dann die Summe bilden sprich dann muss ich ja eine Subroutine erstellen die eine Zeile für Zeile die Zahlen miteinander addiert also so ungefähr dann :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sub Zeilensumme{
	#!/usr/bin/perl -w -l
use strict;
use warnings;

open (100Zahlen, "100Zahlen.dat") or die $!;
	my @Zahlen = <100Zahlen>;
close (100Zahlen);

chomp my$Zahlen ;

sub Zeilensumme{
	my $Zeilensumme =0;

foreach $Zeilensumme(@Zahlen)
{
$summe += $$Zahlen[0]+$Zahlen[1]+$Zahlen[2];}
return $summe;
}

chomp für den zahlenumbruch für jede Zahl von meinem Array-Zahlen; und $Zeilensumme ist die addition von dem String an erster,zweiter und dritter Stelle, als Vorüberlegung

meine frage ist wenn ich das so mache was ist wenn ich pro zeile nur eine 1-stellige Zahl habe und er die dann auch am Ende der Zeile angeben soll

also ich habe garkeine taktik oder überlegung wie es besser mit den subroutines geht würde gerne die korrekte anwendung erlernen gibt es tipps

also ich weiß nicht ob ich 10 verschiedene Zeilensummen für 10 Zeilen erstellen soll oder ob das nicht noch einfacher geht mit der Summierung und falls wenn die weniger als 3 Zahlen pro Zeile sind das er die dann auch automatisch dann so ohne addition angeben soll

Antworten |