As it says those two lines are the contents of an eval done at line 114 from Text::CSV (which it appears you have a very slightly behind copy; in the latest that call has moved a few lines). The perldebug docs for f say that if you don't give it a full path the argument is taken as a regex which it searches for in the keys for %main::. If something else pulled in Text::CSV and it ran its eval and that happens to be the first match for qr{^_<.*CSV} as the keys happen to be ordered then that's what it'll switch to. Has nothing to do with @INC not being honoured.
Edit: the guts of the f command's search (5.34.0 version):
# if not in magic file list, try a close match.
if ( !defined $main::{ '_<' . $file } ) {
if ( ($try) = grep( m#^_<.*$file#, keys %main:: ) ) {
{
$try = substr( $try, 2 );
print $OUT "Choosing $try matching '$file':\n";
$file = $try;
}
} ## end if (($try) = grep(m#^_<.*$file#...
} ## end if (!defined $main::{ ...
The cake is a lie.
The cake is a lie.
The cake is a lie.