Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Perl
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2011, 17:53   #1
Max1548
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 99
Восклицание Текстовый редактор на perl

Написал редактор, но с ошибкой, которую найти не могу, он считывает все текстовые файлы, но если там есть пустая строка, то он останавливается.
Просьба помогите.
Вот код:
Код:
#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser); 
use CGI qw( :standard);

my $write = param ("write") || "";
my $file = param ("file") || "Ура.txt";
my $text = param ("text") || "";
my $nfile = param ("newfile") || $file || "";
$file2 = \$file;

if ($write eq "saved") {
$write = "Файл успешно сохранен<br>\n";
}
elsif ($write eq "help") {
$write = "Помощь:<br>Чтобы открыть/создать файл введите его имя.<br>Чтобы сохранить его нажмите сохранить.<br>";
}
else {
$write = "";
}
if ($file ne "") {
print "Content-type: text/html\n\n";
print "<Title>Текстовый редактор</title>";
print "$write\n";
open (FILE, "$file");
flock (FILE, 2);
{
 local $/ = "";
 $text = <FILE>;
}
flock (FILE, 8);
close (FILE);
print "<b>Файл успешно открыт: </b>\n";
print "<Form>\n";
print "<Input type=\"text\" name=\"file\" value=\"$file\">\n";
print "<Input type=\"submit\" value=\"Открыть\"><br>\n";
print "</form>\n";
print "<Form>\n";
print "<textarea name=\"text\" cols=\"72\" rows=\"25\">$text</textarea><br>\n";
print "Сохранение файла:<br>\n";
print "<input type=\"text\" name=\"newfile\" value=\"$file\"><input type=\"submit\" value=\"Сохранить\">";
}
elsif ($nfile ne "") {
open (FILE, ">$nfile");
flock (FILE, 2);
print FILE "$text";
flock (FILE, 8);
close (FILE);
print "Location: WordPad.pl?write=saved\n\n";
}
else {
print "Content-type: text/html\n\n";
print "<Title>Текстовый редактор</title>";
print "$write\n";
print "Введите имя файла:\n";
print "<Form>\n";
print "<Input type=\"text\" name=\"file\" value=\"$file\">\n";
print "<Input type=\"submit\" value=\"Открыть\"><br>\n";
print "</form>\n";
}
print "<br><a href=WordPad.pl?write=help>Помощь</a>\n";
OS - [||-----------------------------------------------] забил, дойдя до драйвера памяти
Max1548 вне форума Ответить с цитированием
Старый 18.07.2011, 15:00   #2
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Код:
open (FILE, "$file");
flock (FILE, 2);
{
 local $/ = "";
 $text = <FILE>;
}
flock (FILE, 8);
close (FILE);
В этом участке кода вы считываете одну условную "строку" использя разделитель пустую строку.
Замените это творение
Код:
{
 local $/ = "";
 $text = <FILE>;
}
на
Код:
 $text.= $_ while <FILE>;
ssdm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовый редактор... Olaf Общие вопросы .NET 3 26.12.2009 03:33
Текстовый редактор Яр|/||< (^_^) Общие вопросы Delphi 7 22.12.2009 20:01
Текстовый редактор Яр|/||< (^_^) Общие вопросы C/C++ 2 21.12.2009 12:28
Текстовый редактор на C sht0p0r Помощь студентам 10 05.12.2008 03:25
Текстовый редактор Михаил Юрьевич Общие вопросы Delphi 8 10.04.2008 20:17