So fragte ich mich, ob es einen Unterschied in der Verwendung zwischen einer Perl-Klasse-Methode und einer gewöhnlichen Subroutine von einem Standard-Modul gibt. Gibt es eine Zeit, in der du die eine über der anderen benutzen würdest? In diesem Beispiel gehe ich davon aus, dass in keinem der beiden Module Objektmethoden vorhanden sind.Perl-Modul Klassenmethode vs gewöhnliche Unterroutine
Schnell wenig Hauptklasse hier:
#!/usr/local/bin/perl
use strict;
use warnings;
use Foo;
use Bar;
my $arg1 = "blah";
my ($str1, $str2);
$str1 = Foo::subroutine($arg1);
$str2 = Bar->subroutine($arg1);
exit(0);
Paket Foo würde meine gewöhnlichen Unterprogrammaufruf
use strict;
use warnings;
package Foo;
sub subroutine {
my $arg = shift;
my $string = "Ordinary subroutine arg is $arg\n";
return $string;
}
1;
Paket Bar halten würde meine Klasse Methodenaufruf
use strict;
use warnings;
package Bar;
sub subroutine {
my $class = shift;
my $arg = shift;
my $string = "Class method arg is $arg\n";
return $string;
}
1;
Normalerweise, wenn ich halten Ich schreibe Perl-Code, ich würde einfach die Klassenmethode verwenden (wie beim Bar-Beispiel) le), aber ich fing an, über diese Frage nachzudenken, nachdem ich Code von einem ehemaligen Mitarbeiter gelesen hatte, der die Syntax wie im Foo-Beispiel verwendete. Beide scheinen von Natur aus das Gleiche zu tun, aber es scheint mehr zu geben, als man sieht.
*** Immer *** 'Verwendung strict' und' Verwendung warnings' am Anfang * jeder * Perl Programm, das Sie schreiben, egal wie trivial. Es ist sehr wenig sinnvoll, 'my' ohne' strict' zu verwenden. – Borodin
Vertrau mir, ich tue. Ich habe sie einfach nicht für dieses Beispiel geschrieben, weil es nicht zum zentralen Kern der Frage gehörte. – MeNoSeeGood
Aber Sie haben die Shebang-Linie eingefügt, die bei weitem weniger relevant ist! Bitte schreibe deine Beispiele immer nach best practice: Du wirst weniger oft gezüchtigt, und mehr Leute, die deine Fragen lesen, werden glauben, dass es eine * gute Idee * ist. – Borodin