大抵のシステム(OS)はファイルにアクセスするときに先読みやキャッシングをしてくれるので
Perlで二度アクセスするときのIOは気にする必要は小さなファイルであればいりません。

逆に、プログラムの中でキャッシング的な目的でメモリに読み込もうとすると
OS等の低レベルキャッシングとアプリケーションレベルのキャッシングが
物理メモリに配置されることになって、特別な事情がない限り非効率的です。


ちなみにそういうファイルを後から読み込みたいときは専用のモジュールがあります。
Text::Backwords (名前うろ覚え)
今回のケースではメモリ、IOともにもっとも効率がよくなるかと。