You can get just the first channel (your grey value) with the getsamples() method:
# get all the samples for row $y
my @samples = $image->getsamples(y => $y, channels => [ 0 ]);
If your image does have only one channel (check $image->getchannels) the channels argument is unneeded so you have:
my @samples = $image->getsamples(y => $y);
You can also get the samples as a string of bytes:
my $samples = $image->getsamples(y => $y);
You don't mention the precision of your data, but Imager currently always reads TIFFs at 8-bits/sample, even if the TIFF has higher precision.