zur Startseite


Anfragen für Seminare und Coaching senden Sie bitte an office@rolandgeyer.at
*Einzelseminare
*Gruppenseminare
*Vereins- und Firmenseminare
*Werbecoaching

Seminare für Betriebsysteme:

Apple MacOS X
Windows XP und älter
Windows Vista
Windows 7
Linux (SUSE, Ubuntu, Knoppix)

Seminare für Microsoft Office:

Word
Excel
Powerpoint
Outlook
Access

Seminare für Software von Adobe:

Photoshop
Illustrator
Indesign
Dreamweaver
Flash

Spezielle Seminarpakete:

Express DTP Gesamtausbildung
Express Web Gesamtausbildung
Intensiv ECDL Core Prüfungsvorbereitung
Intensiv ECDL WebStarter Prüfungsvorbereitung
ECDL Imagemaker Prüfungsvorbereitung
OCG WebPublisher Prüfungsvorbereitung:
Modul 1
Modul 2
Modul 3
Modul 4
Modul 5
Modul 6
HTML
Javascript

Wollen Sie von Microsoft- oder Adode-Produkten auf
kostenlose und lizenzfreie Software
umsteigen? opensource-akademie zeigt Ihnen wie es geht.

Ihre Meinung ist mir wichtig!

Zum Gästebuch
AGB

Arrayelemente dazu und weg

In Perl lassen sich sehr einfach Listenelemente gezielt einfügen oder löschen.

Elemente werden mit push an das Ende eines Arrays angefügt:

Beispiel_8.1:

@Liste = qw(eins zwei drei vier);
@dazu = qw(AAA BBB);
push (@Liste,@dazu);
print "@Liste";

Als Ausgabe erfolgt:

> eins zwei drei vier AAA BBB

Elemente werden mit unshift an den Anfang eines Arrays angefügt:

Beispiel_8.2:

@Liste = qw(eins zwei drei vier);
@dazu = qw(AAA BBB);
unshift (@Liste,@dazu);
print "@Liste";

Als Ausgabe erfolgt:

> AAA BBB eins zwei drei vier

unshift und push beinhalten, in Gegensatz zu shift und pop den Buchsaben u. Daraus kann man folgende Bauernregeln ableiten:

Das letzte Element eines Arrays wird mit pop ausgelesen und aus dem Array entfernt:

Beispiel_8.3:

@Liste = qw(eins zwei drei vier);
pop (@Liste);
print "@Liste";

Als Ausgabe erfolgt:

> eins zwei drei

Das erste Elemente eines Arrays werden mit shift ausgelesen und aus dem ursprünglichem Array entfernt:

Beispiel_8.4:

@Liste = qw(eins zwei drei vier);
shift (@Liste);
print "@Liste";

Als Ausgabe erfolgt:

> zwei drei vier

Shift letztendlich gestattet die völlige Freiheit bei der Manipulation der Anzahl der Elemente in einem Array.
Shift enthält folgende Parameter:

  1. Nennung der Liste, die manipuliert werden soll (@Liste).
  2. der Angabe der Stelle, ab wo die Veränderung stattfinden soll (bei uns ab dem zweiten Element = 1!).
  3. der Angabe, wieviel Elemente entfernt werden sollen (2).
  4. Nennung der Liste, die eingefügt werden soll.

Beispiel_8.5:

@Liste = qw(eins zwei drei vier);
@dazu = qw(AAA BBB);
shift (@Liste,1,2,@dazu);
print "@Liste";

Als Ausgabe erfolgt:

> eins AAA BBB vier

$myList[-1] liefert das letzte Element des Array. Die Zählung erfolgt daher rückwärts.

Durch Zuweisung eines Wertes an $# des Arrays kann dessen Länge beliebig geändert werden. Fehlende Elemente werden eingefügt bzw. bestehende gelöscht.

Verweise innerhalb eines Arrays auf ein anderes Array erfolgen als Referenz auf das andere Array.

Ringförmige Listen werden verwendet um immer Wiederkehrendes zu wiederholen. Achtung: derart verweisende Objekte werden, wenn sie verwaist sind, von der automatischen Speicherverwaltung nicht gelöscht!

Mehrfach vorkommende Werte eines Arrays können über die Bildung eines Keys mit z.B. Wert = 1 im Hash entfernt werden, da nur ein Key in einem Hash vorkommen kann.

Ein bestimmtes Element einer Liste sucht man mit einer foreach - Schleife, mehrere mit grep(). Grep() liefert die gesuchten Werte zurück. Die Originalliste bleibt damit natürlich erhalten.

z.B.: grep(VERGLEICH, @myListe)

Beispiel_8.6: Liste aller Namen die mit G oder g beginnen

@name = qw(Geyer maria gustav emil egon);
@neu = grep(/^[G|g]/,@name);
print join("\n",@neu);

Als Ausgabe erfolgt:

> Geyer
> gustav

Beispiel: Alle einzulesenden Zeilen, die das Wort Schwein enthalten: grep(/\bSchwein\b/,<>)
Beispiel: alle Zahlen, die durch 10 teilbar sind: grep(/!$_%10/,@zahlen)

Im Gegensatz dazu verändert map() jedes Element der Liste, wie im untenstehenden Beispiel zu erkennen ist. Wenn man die ursprünglichen Werte der Liste weiterhin benötigt, müssen sie vor der Anwendung des map-Befehls gespeichert werden!!

z.B.:
@myListe e_tmp = @myListe e;
map(aendereJedesElement() , @myListe e_temp);
oder:
@neueListe = map({ ( my ($x)=$_ ) =~ tr/../../; $x }, @Liste);

Beispiel_8.7: Ausgabe der Zeichenanzahl der Wörter

@myList = map((length $_),qw(a aa aaa aaaa));
print "@myList";

Als Ausgabe erfolgt:

> 1 2 3 4




Weitere freie Tutorials: Rhetorik & Kommunikation Typografie & Layout Bildbearbeitung mit Photoshop oder GIMP Vektorgrafik mit Illustrator, FreeHand, Corel Draw oder Inkscape Layout mit Indesign oder Scribus Druckvorstufe GoLive Html JavaScript Flash & ActionScript Director & Lingo Assembler DOS Java objektorientiert Perl Word Excel Access PowerPoint Outlook Betriebssystem