use strict; my $OS_TYPE = $^O eq 'MSWin32' ? 'win' : ($^O eq 'nonstop_kernel' ? 'nsk' : 'unix'); sub win_fn { print "windows version of function\n" } sub nsk_fn { print "nsk version of function\n" } sub unix_fn { print "unix version of function\n" } my %xplat = ( 'win' => \&win_fn, 'nsk' => \&nsk_fn, 'unix' => \&unix_fn, ); sub xplatform_fn { return $xplat{$OS_TYPE}->() } xplatform_fn();