The code never goes in to the braces, even though $proc is i386,
and when the larger code parses thru values of Solaris kernel variables, and $var becomes ssd_max_throttle and then ssd_io_time.
If I eliminate the && ( test for $proc ) it goes into the braces.
I have printed out proc just outside this statement, and it is getting set as i386.
If it works fine when you remove the test for $proc the first thing that comes to mind is something is inside the scalar that you're not anticipating...like a newline or control character.
Try printing with tags to make sure nothing is hidden.