1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
package subsembly; use strict; use warnings; use Exporter(); sub new { print 'Hallo'; } sub test { print "du mich auch"; } 1;
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl -w use strict; use warnings; use lib '../module'; use subsembly; if (my $test = subsembly->new()) { } else { print "Fehler $!\n"; } if (my $test = subsembly->test()) { } else { print "Fehler $!\n"; }
2013-04-14T12:47:30 pqich hab einen neuen thread draus gemacht, da die frage hier eher mit OOP zu tun hat und nicht mit der basis-frage, wie man ein modul erstellt für cpan.
2013-04-14T09:36:31 biancaHabe hiermit jetzt mal begonnen und gleich Fragen :)
Hier die Scripte:
subsembly.pm
und test_subsembly.pl:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package subsembly; use warnings; use strict; sub new { my $classname = shift; my $self = {}; return bless($self, $classname); } sub test { print "du mich auch\n"; } 1;
1 2 3 4 5 6 7 8 9 10 11 12
#!/usr/bin/perl -w use strict; use warnings; use subsembly; if (my $test = subsembly->new()) { } else { print "Fehler $!\n"; } if (my $test = subsembly->test()) { } else { print "Fehler $!\n"; }
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
#!/usr/bin/perl use warnings; use strict; package Lamp; sub new { my $classname = shift; my $self = {status => "off"}; return bless($self, $classname); } sub switchOn { my $self = shift; print "Click. Light.\n"; $self->{status} = "on"; } sub switchOff { my $self = shift; print "Click. Darkness.\n"; $self->{status} = "off"; } sub printStatus { my $self = shift; print "The lamp is " . $self->{status} . " now.\n"; } package main; my $lamp = Lamp -> new(); $lamp -> printStatus(); $lamp -> switchOn(); $lamp -> printStatus(); $lamp -> switchOff(); $lamp -> printStatus(); print $lamp->{status}."\n";
QuoteEs ist auch nicht nötig, Klassen in externe Moduldateien auszulagern. Man kann auch Perl mit Klassen in einer einzigen Skriptdatei schreiben
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
package Foo; use strict; use warnings; sub new{ print "This is new!\n"; } sub neu{ print "Das ist neu!\n"; } package main; use strict; use warnings; new Foo; Foo->neu;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
package Foo; use strict; use warnings; use Carp; sub new{ my $class = shift; my %args = @_; my $self = bless{}, $class; return eval{ croak "x ist nicht gesetzt" if not exists $args{x}; $self; }; } package main; use strict; use warnings; my $f = Foo->new(xx => 1) or die $@; # Zeile 24
Quotex ist nicht gesetzt at pack.pl line 24
2013-04-15T11:30:43 rostiNach Möglichkeit auf die ersten Variante verzichten... http://renee-baecker.de/indirekt.htmlZur Frage Funktionen/Methoden aufrufen, guck mal:
Code (perl): (dl )1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21package Foo; use strict; use warnings; sub new{ print "This is new!\n"; } sub neu{ print "Das ist neu!\n"; } package main; use strict; use warnings; new Foo; Foo->neu;
Es gibt also zwei Möglichkeiten für den Aufruf.