Автор Тема: ошибка  (Прочитано 4534 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
ошибка
« : 12 Мая 2005, 21:33:26 »
Что за ошибка?

Can\'t use an undefined value as a HASH reference at file.pl line 392.
Software  like sex - it\'s better when it\'s free

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
ошибка
« Ответ #1 : 12 Мая 2005, 21:57:43 »
perldoc perldiag | less -p "Can\'t use an undefined value as"

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
ошибка
« Ответ #2 : 12 Мая 2005, 22:05:05 »
эта ошибка указывает вот на эту строку

my $mime = $query->uploadInfo($filename)->{\'Content-Type\'};
Software  like sex - it\'s better when it\'s free

Оффлайн 613

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
ошибка
« Ответ #3 : 12 Мая 2005, 22:25:37 »
А значение $filename у тебя чему равно ?
Покажи строки до вызова этих методов.

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
ошибка
« Ответ #4 : 12 Мая 2005, 22:27:40 »
sub inputForm 
	

 
my $table shift;
 
my $query = new CGI;
 
my @tn = &names($table);
 
my %out;
 
my %params $query->Vars;
 
my $flag 0;        

 if(
$query->param(\'filename\')) 
 {
	
my $filename = $query->param(\'filename\');
	
my $fn = &getFileName($filename);
	
my $buffer;
	
my $mime = $query->uploadInfo($filename)->{\'Content-Type\'};
	
if(-e "$conf::image_dir/$fn") 
	
{
	
	
print "File already (<b>$fn</b>) uploaded...
";
	
	
$flag = 0;
	
} else {
 
	
	
my $filename = $query->param(\'filename\');
	

	
	
my $fn = &getFileName($filename);
        
	
foreach my $tmp (@tn) 
	
	
{
	
	
	
$out{$tmp} = $params{$tmp} if $params{$tmp};
	
	
}
	
	
if(&insert($table,\\%out))
	
	
{
	
	
	
open STORE, ">", $conf::image_dir . "/" . $fn or die "Can\'t upload $conf::image_dir: $!\\n";
	
	
	
if($mime !~ /text/) 
	
	
	
{
	
	
	
	
binmode($filename);
	
	
	
	
binmode(STORE);
	
	
	
}
	
	
	
while( read($filename, $buffer, 1024) )
	

	
	
	
{
	
	
	
	
print STORE $buffer;
	
	
	
}
	
	
	
close STORE;
	
	
print "file uploaded...
";
	
	
$flag = 1;
	
	

	
	
else 
	
	
{
	
	
	
$flag = 0;
	
	
}
	
}
	

} else {
	
$flag = 0;
	

}
return $flag;
}
Software  like sex - it\'s better when it\'s free

Оффлайн 613

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
ошибка
« Ответ #5 : 13 Мая 2005, 01:39:31 »
Короче ошибок в коде не вижу, я думаю что проблема в том что параметр $filename неопределён.Ругается то на него.
Посмотри у тебя в имени поля "file" нет ошибки ?

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
ошибка
« Ответ #6 : 13 Мая 2005, 15:17:25 »
Отладчик в руки - и 80 % вопросов снимается.
Ворота в perl - perlmonks.org.ru

Оффлайн 613

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
ошибка
« Ответ #7 : 13 Мая 2005, 18:07:56 »
Извини а что за отладчик такой чудесный, ты в чём пишешь?
Можно просто "print"-ами посмотреть где скрипт отваливается.

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
ошибка
« Ответ #8 : 13 Мая 2005, 18:57:56 »
613: Вот... никакой он не чудесный - а идущий вместе со всеми дистрибутивами perl.
вызывается так:

# perl -d script.pl

после чего можно пошагово пройти весь код и выяснить инициализацию всех параметров. А в данном случае будет полезна команда:

DB> x %params

которая выведет все ключи и значения этого хэша. рекомендую после вызова Vars сделать это. Для отладки скриптов с параметрами запускай отладчик так.

perl -d script.pl var=1 var=2 ... var=3

Вообще отладчик - очень классная вещь. Я правда консольным пользуюсь только под FreeBSD, под виндой использую отладчик из PDK.

P.S
Начал смотреть твой код и вот что подумал, зачем ты после инициализации хэша %params=$query->Vars; еще раз делаешь так:
$filename=$query->param{\'filename\'};
Да и вообще - я функцию Vars использую так (если использую)

use CGI qw(Vars)

my %params=Vars();

после чего работаю спокойно с %params как с обычным хэшом безовсяких $query. А у тебя получается что ты делаешь двойную работу (сперва дампишь все в хэш а потом снова вызываешь param - тогда зачем дампить???)
« Последнее редактирование: 13 Мая 2005, 19:08:54 от cr4ck3r »
Ворота в perl - perlmonks.org.ru

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
ошибка
« Ответ #9 : 13 Мая 2005, 20:34:48 »
cr4ck3r спасиб.
просто не увидел
Software  like sex - it\'s better when it\'s free

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28