#! /usr/bin/perl use strict; use warnings; use 5.020; package foo; sub foo { } sub dummy { } package bar; sub bar { } sub dummy { } package main; use File::Basename; # Das Original Skript heisst meinetwegen skript.pl # soll aber unter diversen Namen mit verschiedenen Funktionen aufgerufen werden # z.B. via SymLinks oder Hardlinks # ln skript.pl foo # hard linked # ln -s skript.pl bar # symlinked # ln -s skript.pl not_defined # # Die verschiedenen Funktionen sollen oben in den packages definiert werden # # Zum Start sollte aber geprüft werden, ob das "aufgerufene" Package überhaupt definiert worden ist. # ermittle gewünschtes Package my $called_as = File::Basename::basename($0); # Als Workaround könnte ich in jedem Package eine Dummy Funktion definieren und prüfen, # ob die vorhanden ist; wenn ja, gilt die Annahme, dass das Package korrekt definiert ist # (ist oben bereits so gemacht). if ( ! $called_as->can("dummy") ) { die "(E) Aufruf als '$called_as' zur Zeit noch nicht unterstützt.\n"; } # Das hat halt den Nachteil, dass ich diese dummy Funktion eben in jedem Package definiert haben muss. # Es ist noch nicht abzusehen, ob ich eine "sinnvolle" Funktion in allen Packages haben werde, die # überall den gleichen Namen haben wird. #### Schöner fände ich einen direkten Check, ob das package definiert ist; etwas dieser Art #if ( ! package_exists($called_as) ) { # die "(E) Aufruf als '$called_as' zur Zeit noch nicht unterstützt.\n"; #} ### Hier geht's dann weiter mit der gewünschten Ausführung... say "Yes! We can run as $called_as."; # ... __END__