#!/usr/bin/perl
print "Start program...\n";
#смена текущего каталога
$flag=-1;
do {
print "Enter path to locate copy of log file: ";
chomp ($scat=<STDIN>);
if (($scat eq ".") || ($scat eq ".."))
{
print "You enter symbol . or ..\n";
$flag=-1;
}
else
{
if (-e "$scat") {
print "You catalog exist\n";
if (chdir $scat){
print "Catalog open succesfully\n";
$flag=0;
}
else
{
print "Bad path!!!\n";
$flag=-1;
}
}
else
{
print "Catalog not exist\n";
}
}
} while ($flag==-1);
do {
if($Index eq "y") {chdir($scat);}
#создание нового рабочего каталога
$cat="OS_01 ";
if ( mkdir("$cat",0777)){
$dir=$scat.$cat;
chdir ($dir);
print "Create catalog $dir\n";
logger("open");
#выполнение основных действий программы
$Index=body();
print $Index;print"\n";
if ($Index eq "y")
{
close (F);
unlink(F);
}
else
{
logger("close");
}
}
else{
print "Create catalog failed. Program stop!!!!";
}
} while ($Index eq "y");
#функция записи собыий в лог файл
sub logger{
($sec,$min,$hour,$day,$mon,$year)=(localtime(time))[0,1,2,3,4,5];
$year+=1900;
#print $_[0];
if ($_[0] eq "open")
{
open (F,">log.txt");
$msg=$day." ".$month[$mon]." ".$year." - ".$hour.".".$min.".".$sec." - Создан лог файл\n";
printf F "$msg";
}
else
{
if ($_[0] eq "close"){
$msg=$day." ".$month[$mon]." ".$year." - ".$hour.".".$min.".".$sec." - Завершение работы программы\n";
printf F "$msg";
close(F);
}
else
{
$msg=$day." ".$month[$mon]." ".$year." - ".$hour.".".$min.".".$sec." - ".$_[0]."\n";
printf F "$msg";
}
}
}
#главная рабочая функция
sub body{
if ($dummy eq "y") {logger ("Повторное выполнение программы");}
#создание трех файлов для примера работы программы
open (File2,">tstFile2.txt");
logger("Создан файл tstFile2.txt");
print "Create tstFile2.txt\n";
open (File3,">tstFile3.txt");
logger("Создан файл tstFile3.txt");
print "Create tstFile3.txt\n";
printf File2 "Filllz1";
printf File3 "Filllz2";
chomp($dummy=<STDIN>);
#остановка программы и переименование файла tstFile2.txt в tstFile4.txt
print "\nPress Enter to continue... \n";
chomp($dummy=<STDIN>);
close (File3);
rename("tstFile3.txt","tstFile4.txt");
logger("Переименование файла tstFile3.txt в tstFile4.txt");
print "Rename file tstFile3.txt to tstFile4.txt\n";
close (File1);
#остановка программы и ожидание ответа пользователя
logger ("Запрос на повтор программы");
print "reply?[y/n]";
chomp($dummy=<STDIN>);
return $dummy;
}
Чтение из файла (Perl)
Вот пример простой программы: создаем каталог, создаем файлы, переименовываем. Вообщем все. как вывести текст из обоих файлов, подскажите пожалуйста:
Код:
Пробовал так
Код:
open(File3, ">tstFile3.txt") or die "Ошибка открытия файла: $!";
print <File3>; # Печать всего файла
close(File3) or die $!;
print <File3>; # Печать всего файла
close(File3) or die $!;
... не помогло.
Код:
open(File2, ">tstFile2.txt");
$line=<File2>;
while (defined($a=<File2>)) {
print $a;
}
$line=<File2>;
while (defined($a=<File2>)) {
print $a;
}
Видимо файл пересоздается по новой, удаляя ранее внесенную в него запись. Это как-то можно исправить,помогите пожалуйста.
прочитайте, пожалуйста, perldoc -f open и разберитесь, что такое '>' в open(File2, ">tstFile2.txt");
Спасибо что направили в нужное русло, очень помого.