Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]13061[/thread]

Hilfe bei Aufgabe Was macht dieses Skript?

Leser: 1


<< >> 6 Einträge, 1 Seite
heini4711
 2009-01-27 13:20
#118390 #118390
User since
2009-01-27
2 Artikel
BenutzerIn
[default_avatar]
Hallo!

Ich habe hier eine Aufgabe, mit der ich nicht klar komme. Ist aus einem Skript zu einer Schulung, die ich kürzlich besuchen musste. Ich soll sagen, was das Programm macht aber leider kann ich es nicht ausführen. Das ist irgendwie so komisch programmiert, dass ich als Anfänger leider überhaupt nicht mehr durchblicke.

Wäre nett wenn mir jemand helfen könnte.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package f;
$eins=[1,([2,3],4),5];
sub new {bless{} ;};
sub u {return $eins->[2]};
package g;
@ISA=f;
@k=(6,7,(8,9),0);
sub new {bless{} };
sub v {$f::eins->[2]=@k;}       
package main;
$p=g->new;
print $p->u;
print "$g::k[3]4";
$p->v;
print $f::eins->[2]->[3];


Grüße und Danke,
Heinrich
bieber
 2009-01-27 13:47
#118392 #118392
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
wieso kannst du es nicht ausführen? musst natürlich noch ein
Code (perl): (dl )
#!/usr/bin/perl

als erste zeile schreiben (Pfad zu deiner perl-distribution)

das script ist aber scheiße, denn es sollte immer mit
Code (perl): (dl )
1
2
use strict;
use warnings;

gearbeitet werden...

Ausgabe ist übrigens:
Code: (dl )
1
2
4
94
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
renee
 2009-01-27 13:55
#118394 #118394
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Solche Skripte in einer Schulung zu verwenden gehört verboten. Kein Wunder, dass es überall heißt, Perl wäre nicht lesbar.

Ich habe das Skript mit ein paar Kommentaren versehen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Klasse f
package f;

# Attribut '$eins' ist eine Arrayreferenz
$eins=[1,([2,3],4),5];

# Konstruktor
# bless ohne Angabe einer Klasse macht es automatisch
# bless {}, __PACKAGE__
# gibt ein Objekt zurück
sub new {bless{} ;};

# $eins->[2] ist eine Dereferenzierung
# siehe http://wiki.perl-community.de/bin/view/Perldoc/perlreftut
sub u {return $eins->[2]};

#==============================================================================#

# Klasse g
package g;

# mit @ISA legt man die Superklassen fest
# zum Lesen empfohlen: http://wiki.perl-community.de/bin/view/Perldoc/perlboot
@ISA=f;
@k=(6,7,(8,9),0);

# Konstruktur der Klasse g
sub new {bless{} };

sub v {$f::eins->[2]=@k;}  

#==============================================================================#

# "Hauptprogramm"
package main;

# erzeuge ein Objekt von 'g' 
$p=g->new;

# $objekt -> methode ruft 'methode' vom Objekt auf
print $p->u;
# Zugriff auf ein Attribut der Klasse g
print "$g::k[3]4";
$p->v;
print $f::eins->[2]->[3];


Da wird absolut schlechter Programmierstil verwendet *kopfschüttel*
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2009-01-27 14:43
#118395 #118395
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Wenn es eine Aufgabe in einer Schulung ist, um die Lernenden zu prüfen, was so ein Modul macht, dann ist es schon ok.
heini4711
 2009-01-27 15:13
#118398 #118398
User since
2009-01-27
2 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen!

Super, vielen Dank! So verstehe ich das jetzt einigermaßen. Wenigstens war ich dann nicht der einzige der bei dem Programmiertstil nur noch verwirrt ist...

Macht sowas eigentlich Sinn?
Code (perl): (dl )
@k=(6,7,(8,9),0);


Das ist doch das gleiche wie:
Code (perl): (dl )
@k=(6,7,8,9,0);


Dachte zumindest, dass da einfach die Elemente der Liste (8,9) in die Liste @k eingefügt werden.
Oder ist das auch nur zur Verwirrung gedacht? :)

Gruß,
Heinrich
renee
 2009-01-27 15:19
#118400 #118400
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Keine Ahnung ob das absichtlich zur Verwirrung gedacht war oder ob das "aus Versehen" reingerutscht ist. Aber Du hast recht. Die beiden Ausdrücke sind gleich.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 6 Einträge, 1 Seite



View all threads created 2009-01-27 13:20.