Hi Dirk, I think your question has less to do with CGI::Application than you think. Consider this. Put the logic to your unix-admin into a set of modules outside your web-application module:
instancescript.cgi webapp.pm AccountEditor::Unix.pm AccountEditor::Solaris.pm ( 'ISA' AccountEditor::Unix ) AccountEditor::AIX.pm ( 'ISA' AccountEditor::Unix ) AccountEditor::HPUX.pm ( 'ISA' AccountEditor::Unix ) AccountEditor::FreeBSD.pm ( 'ISA' AccountEditor::Unix ) AccountEditor::Linux.pm ( 'ISA' AccountEditor::Unix ) You define all of the normal admin opertations in Unix.pm. You then selectively add/override methods in the OS-specific modules. Then if you've gotten their os preference in a variable called $osPref, you can do something like this in your WebApp.pm: sub setup { my $self = shift; $self->start_mode(...your default mode); $self->mode_param(...your param here); $self->run_modes( ... your run mode list here ); my %implementations = ( 'Default' => 'AccountEditor::Unix', 'Solaris' => 'AccountEditor::Solaris', ... ); my $implementation = $implementations{ $osPref } || $implementations{ 'Default' ); my $file = join('/', split(/::/, $implementation) ) . '.pm'; require $file; $self->param('administrator', $implementation->new() ); } Then in each run mode, you can check to see if the 'administrator' you've installed can support the action that the run mode wants to allow the user to do: my $administrator = $self->param('administrator'); if( my $method = $administrator->can( 'action_for_this_runmode' ) ) { $administrator->$method( parameters appropriate for the action ); return "success page"; } else { return "I'm Sorry, but I don't know how to do that" } HTH -Stephen -----Original Message----- From: wessner [mailto:wessner]On Behalf Of Dirk Wessner Sent: Thursday, March 14, 2002 07:56 PM To: CGI::Application Mailing List Subject: [cgiapp] OO Perl, Inheritance and so on Hello. Since I'm new both to CGI::Application and OO Perl it's not easy to explain what I'd like to do. For Example if I'd like to create a WebApp that manages User accounts on different Unix Systems. There are run-modes that will be the same for every Unix, others (sth. like "add_user" ) that are slightly different, and others that are totally different or even additional because on a special host in addition to create the user I want to put him into /etc/aliases and set quotas and whatever. As start-screen I would like to have a menue where you can choose first the platform and then the host. I read the perldoc for CGI::Application as well the O'Reilly Article on www.perl.com. Somehow you CAN do such a thing in an easy way, but I'm not really sure exactly how to structure it. Must have sth to do with the use of cgiapp_init() and the possibility of calling run_modes() more than once. OK, Building a "ordinary" WebApp using CGI::Application was no problem for me, i.e. one instance script and one application module with severeal run-modes in it. But this is a bit different. How exactly to inherit from a Superclass-WebApp? Why does one use "use base 'CGI::Application';" and not @ISA qw( CGI::Application ) , btw? And what about a mechanism to decide what Class exactly to instanciate at runtime? Different instance-Scripts? Hmm...I hope somebody understands my question(s). Thanks in advance, Dirk Wessner --------------------------------------------------------------------- Web Archive: http://www.mail-archive.com/cgiapp@lists.vm.com/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- Web Archive: http://www.mail-archive.com/cgiapp@lists.vm.com/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]