Try using Data::Dumper to see what is in %ENV, it is posible that user bin explicity unsets USER or some other shenanigains. This is the output that I get on my box (Dapper drake server).
env.pl, the test script
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
print Dumper(\%ENV);
And the output:
trizor@trap:/home$ sudo su - greg -c /home/env.pl
$VAR1 = {
'HOME' => '/home/greg',
'LOGNAME' => 'greg',
'SHLVL' => '1',
'_' => '/home/dummy.pl',
'SHELL' => '/bin/bash',
'TERM' => 'xterm',
'PWD' => '/home/greg',
'USER' => 'greg',
'LANG' => 'en_US.UTF-8'
};
As you can see, USER is there plain as day.