use strict;
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" }
sub xplatform_fn {
if ($^O eq 'MSWin32') {
return win_fn();
} elsif ($^O eq 'nonstop_kernel') {
return nsk_fn();
} else {
return unix_fn();
}
}
xplatform_fn();
####
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();
####
use strict;
my $OS_TYPE = $^O eq 'MSWin32' ? 'win' :
($^O eq 'nonstop_kernel' ? 'nsk' : 'unix');
sub XPlat::win_fn { print "windows version of function\n" }
sub XPlat::nsk_fn { print "nsk version of function\n" }
sub XPlat::unix_fn { print "unix version of function\n" }
sub xplatform_fn { return &{$XPlat::{$OS_TYPE."_fn"}} }
xplatform_fn();