you could (and probably should) specify solaris for the else-clause, but I'm not sure what $^O yields on Solaris.. Probably just 'solaris'.
This is somewhat off topic... it all depends on what you are trying to do but note there is a difference in output between
$^0,
uname, and
$Config{archname}.
Below is some output from different OSes for comparison.
The following code was used:
#!/usr/bin/perl
use strict;
use Config;
my $os_OS = $^O;
my $config = $Config{'archname'};
my @uname = `uname -a`;
chomp( my $os = shift @uname );
$os =~ s/^(\w+)\s.*/$1/;
print "Uname -> $os\n";
print "\$^O -> $os_OS\n";
print "Config -> $config\n";
Linux
Uname -> Linux
$^O -> linux
Config -> x86_64-linux-gnu-thread-multi
Solaris 5.9 and 5.10
Uname -> SunOS
$^O -> solaris
Config -> sun4-solaris-64int
AIX 6.1
Uname -> AIX
$^O -> aix
Config -> aix-thread-multi
Also be aware that $^O returns the architecture the perl binary was built on
not the OS you are running on. That can be misleading, for example:
OS400 PASE
Uname -> OS400
$^O -> aix
Config -> aix
See the discussion
OS400 PASE - architecture? for details.
regexes