http://www.perlmonks.org?node_id=23581

princepawn has asked for the wisdom of the Perl Monks concerning the following question:

Often one knows beforehand which subclass of base class in which to initialize one's method. However, in my case, I want to call a constructor as a function of the operating system that I am on. My first thought was to use a hash keyed on operating system name and store a reference to the new of each class as the value, ie:
%constructor = ( 'MSWin32' => \&FTP::Session::Win32->new, 'HPUX' => \&FTP::Session::HPUX->new )
Which brings up an additional question: since I am using an arrow in the above code instead of ::, will the first argument to the new be the package name? And will it only pass arguments if I had used ::? Thanks for any help guys.