LINUX.ORG.RU

Perl, запись в файл


0

0

Задача такова: нужно в файлах определённого каталога произвести замену текста. Пытаюсь делать так:

#/usr/bin/perl

opendir(DIRDOC,"./doc") or die "Error open directory, $!";

while($currentfile=readdir(DIRDOC))

{

if($currentfile=~m/.*\.html*/)

{

sysopen(SOURCEFILE,"путь".$currentfile,O_RDWR) or die "Error open file $currentfile: $!";

@content=<SOURCEFILE>;

foreach(@content)

{

$_=~s/\/doc\//\.\.\/doc\//g;

}

seek(SOURCEFILE,0,0);

$/="\n";

print(SOURCEFILE @content);

close(SOURCEFILE);

}

}

closedir(DIRDOC);

Хотя содержимое коллекции, прочитанной из файла, и меняется, записать обратно её не удаётся. Где я лопухнулся?

#/usr/bin/perl
opendir(DIRDOC,"./doc") or die "Error open directory, $!";
while($currentfile=readdir(DIRDOC))
{
  if($currentfile=~m/.*\.html*/)
  {
  sysopen(SOURCEFILE,"путь".$currentfile,O_RDWR) or die "Error open file $currentfile: $!";
  @content=<SOURCEFILE>;
  foreach(@content)
  {
    $_=~s/\/doc\//\.\.\/doc\//g;
  }
  seek(SOURCEFILE,0,0);
  $/="\n";
  print(SOURCEFILE @content);
  close(SOURCEFILE);
  }
}
closedir(DIRDOC);

Так, кажись, лучше будет.

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от one_more_hokum

>sysopen(SOURCEFILE,"путь".$currentfile,O_RDWR)
Я пользуюсь кострукцией:
open (DESKRIPTOR,">>file")
без ">>" файл открывается "только для чтения"
Зы Неделя Perl на ЛОРе?

gnomino
()
Ответ на: комментарий от gnomino

> Неделя Perl на ЛОРе?

Да можно было и на питоне нафеячить, в принципе. Под руку попался перл, его и заюзал.

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от gnomino

Да, ">>" открывает файл на "чтение/дозапись", очень удобно в случае логов, для того чтобы открыть файл на "чтение запись" используется ">"

gnomino
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.