この Perl スクリプトはWin7 で実行され、Linuxマシンで読み取られる Clearcase 構成仕様を変更します。Clearcase はその行末について非常にうるさいです。それらは正確かつ \n (0x0A) のみでなければなりませんが、Perl に \n 終わりだけを吐き出させることはできません。通常は \r\n (0x0D 0x0A) になります。
element /somevob/...
これは、構成仕様要素の配列に対して実行され、ビットをelement /vobs/somevob/...
ファイル ハンドルに変換して出力する Perl スニペットです。
$fh = new FileHandle;
foreach my $line (@cs_array)
{
$line =~ s/([element|load])(\s+\/)(.+)/$1$2vobs\/$3/g;
$line =~ s/[\r\n]/\n/g; # tried many things here
$fh->print($line);
}
$fh->close();
配列内の要素が複数行で、\n で区切られている場合があります。
element /vob1/path\nelement\n/vob2/path\nload /vob1/path\n element\n
/vob3/path
load /vob3/path
バイナリ ビューアーで Win7 に書き込まれたファイルを調べると、常に 0x0D 0x0A の改行シーケンスがあり、Linux の Clearcase はこれについて不平を言っています。これは印刷物から来ているようです。
助言がありますか?10分くらいで終わると思ってた…