Oh yeah, it's definitely possible. Especially the second approach, because the ->getline_hr_all method allows you pretty much to limit the rows Text::CSV should look into. As for limitting things horizontally, that will prove to be a little more tricky, but it isn't impossible at all. I'll leave that up to you, though. You'll eventually end up with something that's a mix of both of my approaches, I think.
Just read the documentation for Text::CSV - it's pretty elaborate but written in a clear and understandable manner. FYI: I never used that module until just now, so working with Text::CSV was new to me, and I figured it out just by following the documentation.