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

eine 'sub'-Methode aus andere .plx zu benutzen ?



<< >> 8 Einträge, 1 Seite
Updecrator
 2006-01-10 13:13
#61612 #61612
User since
2005-11-16
17 Artikel
BenutzerIn
[default_avatar]
Hallo, zusammen,

koennte ihr mir helfen, eine Methode aus anderer Datei zu benutzen ?

z.B.
in "prog1.plx"
Code: (dl )
1
2
3
4
package p1;  
...
exit;
sub met1 {..}


in "prog2.plx" moechte ich diese Methode 'met1' benutzen,
aber nicht mit 'require prog1.plx', 'use ..', oder 'do ..', wie?

vielen Dank !
ps. beide .plx in demselben Package! (package p1)
Relais
 2006-01-10 13:29
#61613 #61613
User since
2003-08-06
2257 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Updecrator,10.01.2006, 12:13]aber nicht mit 'require prog1.plx', 'use ..', oder 'do ..', wie?[/quote]
warum denn nicht?
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
Dubu
 2006-01-10 13:35
#61614 #61614
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Du moechtest die Funktion benutzen, aber weder "use", noch "require" oder "do" verwenden? Sorry, aber ausser cut&paste faellt mir da nicht viel ein.

Und ueberhaupt, wieso hast du ein Package auf mehrere Dateien verteilt? Das ist zwar moeglich, ergibt in meinen Augen aber nicht viel Sinn. Alleine schon, um ein Package als Modul zu nutzen, muss der Datei(pfad)name mit dem Packagenamen uebereinstimmen, und mehrere Moduldateien mit dem gleichen Namen sind auch eher stoerend als sinnvoll.
Relais
 2006-01-10 14:21
#61615 #61615
User since
2003-08-06
2257 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Dubu,10.01.2006, 12:35]ausser cut&paste faellt mir da nicht viel ein.[/quote]
Och, da fällt mir schon was zu ein. Er könnte die Datei einlesen, den Code extrahieren und mit einer bösen Perlfunktion [s]frankensteinisieren[/s] Leben einhauchen... etwa. Einen Preis für Klug- oder gar Faulheit erwarte ich jetzt aber nicht ;-)
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
Updecrator
 2006-01-10 14:28
#61616 #61616
User since
2005-11-16
17 Artikel
BenutzerIn
[default_avatar]
Hallo, danke schoen fuer die Antworten!
Quote
Er könnte die Datei einlesen, den Code extrahieren und mit einer bösen Perlfunktion frankensteinisieren Leben einhauchen...

Das ist eine gute Idee !

wenn ich 'require ..' oder 'do ..' benutze,
wird 'prog1.plx' neben ausgefuehrt, aber das wurde nicht gebraucht.

Wenn es keine andere Moeglichkeit gibt,
muss ich also 'use ..' benutzen, zwar als 'Module'.


Viel Gruss
pq
 2006-01-10 14:52
#61617 #61617
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
es geht anders:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
package module;

sub main {
   print "running module!\n";
}

_ _FILE_ _ eq $0 and main;

sub test {
   print "module::test()\n";
}

1;
_ _FILE_ _ durch __FILE__ ersetzen.
Code: (dl )
require "module.pl"; # gibt "running module" nicht aus
\n\n

<!--EDIT|pq|1136897727-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Updecrator
 2006-01-10 16:32
#61618 #61618
User since
2005-11-16
17 Artikel
BenutzerIn
[default_avatar]
hallo, pq,
Quote
require "module.pl"; # gibt "running module" nicht aus

ja! tatsaechlich kann die Ausfuehrung von 'prog1.plx' in meinem Fall vermieden werden.
vielen Dank !
ptk
 2006-01-10 21:43
#61619 #61619
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du möchtest also ein Script, das gleichzeitig ein Modul ist? Ich benutze dazu immer:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
package Module;
sub A { ... }
sub B { ... }
sub C { ... }
return 1 if caller(); # hier endet der Modul-Part
# Ab hier wird alles nur ausgeführt, wenn die Datei als Skript gestartet wird.
require Getopt::Long;
Getopt::Long::GetIOptions(...) or die "usage...";
A();
...
<< >> 8 Einträge, 1 Seite



View all threads created 2006-01-10 13:13.