CGI::Session のセッション名

CGI::Session ではかつてセッション(クッキー)名がパッケージグローバルな変数,$CGI::Session::NAME によって規定されていました。CLASS->name() メソッドで設定はできたんですが,不便でした。たとえば,複数セッションを使いたい場合,セッション取得時とセッションクッキー設定時に,各セッションにつき,いちいち CLASS->name() で設定する必要があったり。結局,毎度毎度そんな面倒なことはしていられないので,継承して独自のセッションクラスを作ったりしていました。
さて最近気づいたんですが,4.10 あたりで,

* NEW: name is now an instance method (RT#17979) (Matt LeBlanc)

となってます。めでたく CLASS->name() と $obj->name() が使えるようになったようです。といっても,CLASS->new() や CLASS->load() でセッション名を指定できるようにはなっていないので,

my $q = CGI->new;

CGI::Session->name('SID1');
my $s1 = CGI::Session->new($q);
CGI::Session->name('SID2');
my $s2 = CGI::Session->new($q);
...
print $q->header( -cookie => [$s1->cookie, $s2->cookie] );

のようにする必要があります。まだまだ不格好ですが,フレームワーク側で吸収できるくらいの不便さに進歩したといえます。

mod_perl について全然詳しくないんですが,少なくとも prefork MPM だと,中程の4行はアトミックに実行されることを期待していいんですかね?

><