To begin with, the perl used in Solaris is 32 bit and the Linux one 64
bit. They are also different versions (v5.12.3 vs v5.10.1).
But the main difference is probably in the linux version mapping
/usr/lib/locale/locale-archive, a 86M file, while in Solaris it seems to
be using /usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3,
/usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3 and
/usr/lib/locale/en_US.UTF-8/libc.so.1 instead.
From locale-gen(8):
Locale data files can be stored either in a single archive file,
/usr/lib/locale/locale-archive, or in a deep tree where individual
files are stored under /usr/lib/locale/<locale_name>/LC_*.
As all processes will be sharing the same locale-archive file, the two
methods shouldn't matter too much for memory usage, although
locale-archive will probably bite us when dumping core.