requireとサーバーの負担について質問です。

#!/usr/bin/perl

print "Content-type:text/html\n\n";

require "a.cgi";
print $tmp;
require "b.cgi";
print $tmp;
require "a.cgi";
print $tmp;

exit;

a.cgiには $tmp="a";
b.cgiには $tmp="b";
と書いてあります。

と書くと、結果はabaとしたいのですが、abbとなるんです。
3回目のrequireが1回目と同じために3回目の処理を勝手にスキップ
してるのではないかと推測してみたんですがあってますでしょうか。

別の案として、
require "a.cgi";
$tmpa=$tmp;
require "b.cgi";
$tmpb=$tmp;
print "$tmpa$tmpb$tmpa";

と考えたんですが、a.cgi b.cgiは本来40個くらい変数格納していて、
全て変数に取っとくのもどうかと思い最初の案を考えたのですが。

日本語が不鮮明だな…。まとめてみると、
「2度目のrequireを有効にすることができるか、できるならその方法」
「別の案の場合、サーバーに掛かる負担ってのは憂慮するほどのものであるか」
の二点が疑問です。

どなたかご教授頂ければ幸いです。