Forum Webscript.Ru

Программирование => Perl => Тема начата: a_tak от 03 Ноября 2003, 13:44:50

Название: Странности подгружаемым файлом .db
Отправлено: a_tak от 03 Ноября 2003, 13:44:50
у меня, как у мало знакомого с Perl, возникла такая проблема:

есть 2 файла - table.pl и table.db, из table.db подгружается таблица в table.pl:

#!/usr/bin/perl
$pn_count = 0; #
$file_db = "table.db";

На моем компе все нормально работает, в сети тоже.

Если я меняю table.db на другой файл, например table2.db:

#!/usr/bin/perl
$pn_count = 0; #
$file_db = "table2.db";

тогда на компе (Денвер-2) кажет содержимое table2.db, а всети не показывается ничего.

Пробовал менять html на shtml - не помогает. Файлы все в наличии.

В чем ошибка?
Название: Странности подгружаемым файлом .db
Отправлено: NeoNox от 03 Ноября 2003, 14:22:13
Хмм... У тебя батенька каша в голове.
При чем тут html и shtml?
У тебя $file_db содержит не содержимое фаила а его название.
Что ты с ним дальше делаеш?
И что значит подгружается фаил?
Название: Странности подгружаемым файлом .db
Отправлено: a_tak от 03 Ноября 2003, 15:59:52
Наверное, действительно каша (про html это я забежал в другую степь - извиняюсь)

Снова по-порядку: есть файл table.pl с такими строками

#!/usr/bin/perl
$pn_count = 0; #
$file_db = "table.db";

есть файл table.db с текстом

http://www.russtroy-spb.ru/cgi-bin/table.pl - вот результат

Затем я создаю файл table2.pl и меняю название .db файла (который тоже создан)

#!/usr/bin/perl
$pn_count = 0; #
$file_db = "table2.db";

и результат на домашнем компе виден, а в сети - нет

http://www.russtroy-spb.ru/cgi-bin/table2.pl - результата нет

Права для файлов выставлены одинаковые, файлы в наличии - в чем причина - не понимаю. Может кроме имени файла еще что-то нужно поменять? Тогда почему я на домашнем все вижу?
Название: Странности подгружаемым файлом .db
Отправлено: Phoinix от 03 Ноября 2003, 16:11:32
a_tak
Телепатов тут нет... Если у тебя скрипт состоит из 3-х строк, то я удивляюсь, что он у тебя хоть как-то работает... может все-таки покажешь дальнейшие действия производимые с файлом?
Название: Странности подгружаемым файлом .db
Отправлено: NeoNox от 03 Ноября 2003, 17:05:44
Цитировать
a_tak:
#!/usr/bin/perl $pn_count = 0; # $file_db = "table.db";

есть файл table.db с текстом

http://www.russtroy-spb.ru/cgi-bin/table.pl - вот результат

Я конечно понимаю что Perl ты перекомпилил сам и дописал свою логику в его работу, но тогда почему ты нас спрашиваеш?
Скрипт который ты уже второй раз цитируеш, так как он работает, работать не может. Как второй (table2.pl) - он будет работать, с 500 ошибкой (потому что ты хедер не послал).
Так что, либо покажи реальный table.pl, либо мы прекращаем этот разговор.
Название: Странности подгружаемым файлом .db
Отправлено: a_tak от 03 Ноября 2003, 17:23:37
Дико извиняюсь перед всем сообществом - не по злому умыслу, а тока по неведению...

Взял чужой скрипт, поменял в строке название файла...

#!/usr/bin/perl
$pn_count = 0;       #
$file_db = "table.db";
######## Error Messages ####################
$text{\'0001\'} = "Что-то где-то ненашлось =((";
############################################
$pn_flag = "Off";    # On & Off нумиратор строк
$font_size = 1;      # размер буковок
$border = 1;         # бордюр в таблице
$cellspacing = 0;    #
$cellpadding = 2;    #
$width = 40;
############################################
print "Content-type: text/html\\n\\n";

open(LOG,"$file_db") || &Error("0001");
   @lines = ;
close(LOG);

$kol_lines = @lines;
$kol_stolbs = @stolbs = split(/;/, @lines[0]);

print "\\n";
print "\\n";


foreach $stolbs (@lines) {
   $stolbs =~ s/\\n//g;
   $count = 0;

   @stolbs = split(/;/, $stolbs);
   print "\\n";
   if($pn_flag eq "On"){
      print "   \\n";
      $pn_count++;
   }

   while($count < $kol_stolbs){
      if($flag ne "On"){
         print "   \\n";
      $count++;
   }
   print "\\n";
   $flag = "On";
}
print "
";
      if ($pn_count == 0){print "п/н";}else{print "$pn_count";}
      print "
";
      }elsif($count == 0){
         print "   
";
      }elsif($count == 1){
         print "   
";
      }elsif($count == 2){
         print "   
";
      }else{
         print "   
";
      }
      print "";
      print "@stolbs[$count]";
      if ($flag ne "On"){print "";}
      print "
\\n";
print "\\n";
print "\\n";

exit;

sub Error {
   local ($error_text) = @_;
   print "$text{$error_text}\\n";
exit;}

там вначале была шапка человека ,который это все сделал, не знаю, нужна или нет - я ее удалил, сейчас поищу, может где осталась...
Название: Странности подгружаемым файлом .db
Отправлено: NeoNox от 03 Ноября 2003, 17:28:26
во первых, замени $file_db = "table.db"; на $file_db = "./table.db"; если он в текущем каталоге лежит. Если нет - то полный путь с корня к этому файлу.
Название: Странности подгружаемым файлом .db
Отправлено: a_tak от 03 Ноября 2003, 17:32:53
#!/usr/bin/perl
############################################
##                                        ##
##               WebTABLE                 ##
##           by Andy Smirnoff             ##
##   (e-mail andy_smirnoff@iname.com)     ##
##                                        ##
##             version:  1.00             ##
##        last modified: 04/19/03         ##
##           copyright (c) 2003           ##
##                                        ##
############################################
$pn_count = 0;       #
$file_db = "table.db";
######## Error Messages ####################
$text{\'0001\'} = "Что-то где-то ненашлось =((";
############################################
$pn_flag = "Off";    # On & Off нумиратор строк
$font_size = 1;      # размер буковок
$border = 1;         # бордюр в таблице
$cellspacing = 0;    #
$cellpadding = 2;    #
$width = 40;
############################################
print "Content-type: text/html\\n\\n";

open(LOG,"$file_db") || &Error("0001");
   @lines = ;
close(LOG);

$kol_lines = @lines;
$kol_stolbs = @stolbs = split(/;/, @lines[0]);

print "\\n";
print "\\n";


foreach $stolbs (@lines) {
   $stolbs =~ s/\\n//g;
   $count = 0;

   @stolbs = split(/;/, $stolbs);
   print "\\n";
   if($pn_flag eq "On"){
      print "   \\n";
      $pn_count++;
   }

   while($count < $kol_stolbs){
      if($flag ne "On"){
         print "   \\n";
      $count++;
   }
   print "\\n";
   $flag = "On";
}
print "
";
      if ($pn_count == 0){print "п/н";}else{print "$pn_count";}
      print "
";
      }elsif($count == 0){
         print "   
";
      }elsif($count == 1){
         print "   
";
      }elsif($count == 2){
         print "   
";
      }else{
         print "   
";
      }
      print "";
      print "@stolbs[$count]";
      if ($flag ne "On"){print "";}
      print "
\\n";
print "\\n";
print "\\n";

exit;

sub Error {
   local ($error_text) = @_;
   print "$text{$error_text}\\n";
exit;}

Вот, это с шапкой оригинал - неужели шапка на что-то влияет ?  :))
Название: Странности подгружаемым файлом .db
Отправлено: a_tak от 03 Ноября 2003, 17:36:35
Цитировать
NeoNox:
во первых, замени $file_db = "table.db"; на $file_db = "./table.db"; если он в текущем каталоге лежит. Если нет - то полный путь с корня к этому файлу.



Так ,а зачем менять путь, если это работает? Перестает работать, когда table.db меняется на table2.db.

.pl и .db -файлы лежат в папке cgi-bin
Название: Странности подгружаемым файлом .db
Отправлено: ondr от 03 Ноября 2003, 17:37:03
a_tak
Замени
#!/usr/bin/perl
на
#!/usr/bin/perl#

А вдруг поможет ;)
Название: Странности подгружаемым файлом .db
Отправлено: a_tak от 03 Ноября 2003, 19:03:46
Цитировать
ondr:
a_tak
Замени
#!/usr/bin/perl
на
#!/usr/bin/perl#

А вдруг поможет



Чуял ,что в какой-то мелочи дело... Блин, заработало :)

Спасибо!