Этот скрипт Perl имеет , работающий на Win7, изменяя спецификацию конфигурации Clearcase, которая будет , прочитанная на машине Linux. Clearcase очень суетливый по поводу окончаний строки, они должны быть точно и только \ n (0x0A), однако, как бы то ни было, я не могу заставить Perl выплевывать только \ n окончаниях, они обычно выходят \ r \ n (0x0D 0x0A)Использование Perl Win7 для записи файла для Linux и наличия только окончаний строки Linux
Вот фрагмент Perl, работающий над массивом элементов конфигурации конфигурации и преобразование element /somevob/...
бит в element /vobs/somevob/...
и печать в дескриптор файла.
$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();
Иногда элементы в массиве являются многострочными и разделена \ п
element /vob1/path\nelement\n/vob2/path\nload /vob1/path\n element\n
/vob3/path
load /vob3/path
Когда я смотрю в файл написано на Win7 в двоичном зрителе всегда есть последовательность новой строки 0x0D 0x0A о чем жалуется Clearcase на Linux. Это похоже на печать.
Любые предложения? Я думал, что это было бы 10 минут работы ...
Вы пытались явно указывать '\ x0A' вместо' \ n'? IIRC, '\ n' является логической строкой. – amon
@amon, насколько я мог сказать, это неправда в Perl. '\ r' is' \ x0d', '\ n' is' \ x0a', и это только слои IO, которые переводят между '\ r \ n' и' \ n' на границах. Если кто-то может доказать, что я неправ, я бы хотел это увидеть. – hobbs
@hobbs Это имеет смысл (прошло некоторое время с тех пор, как я написал что-то для Windows). – amon