A little faster. To see how much (quite a bit) you might want to try Benchmark.pm:
$lastname =~ s/^([a-z])/\u$1/;
Or if you want a cool one that will init cap an entire string (but without the eval overhead of ucfirst):
$txt =~ s/\b(\w+)/\u\L$1/g;
my @a=qw(random brilliant braindead); print $a[rand(@a)];