PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : $0 in Perl-Modulen


ricci007
15.06.2004, 11:36
Hallo @ll,

angenommen ich habe 2 Perl-Files:

module.pm (Perl-Module)
script.pl (Perl-Skript)

Jetzt gebe ich in beiden Skripten '$0' aus. Was erhalte ich, wenn ich mich in C:\tmp befinde und folgenden Aufruf tätige: 'perl -w scripts\script.pl'???

Also ich meine, was gibt script.pl aus (das ich ja aufgerufen habe) und was gibt module.pm aus (das ich mit use in script.pl verwende)?

Bin für jede Information dankbar.

LG

ricci007


Jan Krüger
15.06.2004, 15:04
$0 Contains the name of the program being executed.
Das würde dann also in beiden Fällen der gleiche Wert sein.

PS. warum hast du es nicht einfach ausprobiert? Wären doch nur drei Zeilen Code gewesen.

ricci007
15.06.2004, 15:44
Habe ich ja. Warum bekomme ich dann folgendes raus?


script.pl: scripts/script.pl
module.pm: scripts/module.pm


Verstehe ich nämlich nicht. Darum mein post!

LG

ricci007

Jan Krüger
15.06.2004, 18:44
test.pl
use lib '.';
use test;
print "test.pl: $0\n";
test.pm
print "test.pm: $0\n";
Ausgabe
jast@perceptron % perl test.pl | 20040615_1843.02 | ~/temp
test.pm: test.pl
test.pl: test.pl

butterkeks
16.06.2004, 21:54
Wie es aussieht, benutzt du Pelr unter Windows, wa?

Der einzige Workaround, der mir jetzt so aus dem Bauch heraus einfallen würde, wäre, die Prozess ID mithilfe der Variable $$ auszulesen und eines der diversen Win32:: Module zu verwenden, um so die Kommandozeile auszulesen. Ich bin mir sicher, dass es irgendwie ging, die Kommandozeilenparameter von einem fremden Prozess auszulesen. Ich werde mal recherchieren und berscheid sagen, wenn ich den schnipsel wiedergefundne habe.

Du kannst auch mal dein Glück versuchen: http://msdn.microsoft.com
Ist zwar C/++, aber vielleicht lässt sich das irgendwie umsetzen.

Natürlich könnte auch schlicht und einfach dein test code fehlerhaft sein...?