新しいレコード$csvをshohinq_master.csvの一番上の行に加える、というものなのですが、

open(shohin,"+>shohinq_master.csv");
flock(shohin,2);
@shohin=<shohin>;
unshift(@shohin,$csv);
print shohin @shohin;
close(shohin);
flock(shohin,8);

・・だとうまくいきません。一番上の行が上書きされてしまうだけです。
flockをコメントアウトしても同じなので、flockは問題ないですよね?
下だとうまくいきます。

open(shohin,"<shohinq_master.csv");
@shohin=<shohin>;
close(rank);

unshift(@shohin,$csv);

open(shohin,">shohinq_master.csv");
print shohin @shohin;
close(shohin);

なにがいけないのでしょうか?おねがいします。