Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     09 Mar 2002  15:50:50
 To : Maksim Pozdeyev
 Subject : Re: Use of uninitialized value
 -------------------------------------------------------------------------------- 
 
 Здравствуй, Maksim Pozdeyev.
 
 MP> Мы к вам, профессор Artem Chuprina, и вот по какому делу...
 
 MP> 08 Мар 02 11:54, Artem Chuprina -> Maksim Pozdeyev:
 
  MP>>  >>> В коде есть такая строка: if ($ARGV[0] eq "") { и т.п.
  MP>>  >>> Use of uninitialized value in string eq at ./lc line 18.
  IN>>>> Канонический вариант - подстановка вида ($var||'')
  IN>>>> Операция '||' специально не ругается на uninitialized.
  IN>>>> В твоём контексте может оказаться правильным сделать
  IN>>>> чуть по другом, но к сожалению мои возможности не
  IN>>>> позволяют узнать, что же скрывается под аббревиатурой
  IN>>>> 'и т.п.'
  MP>>>  Hу меня уже просветили на тему if (defined($ARGV[0]) && $ARGV[0]
  MP>>> eq "")
  MP>>>  Hо это не работает, или я чей-то не понимаю.
  AC>> А дочитать до конца то письмо, в котором тебя об этом просветили,
  AC>> просветления не хватило? Пывбывав бы...
 
 MP>  if (defined($ARGV[0]) || $ARGV[0] eq "") должного результато тоже не дало.
 
 А головой подумать? Hу забыл я указать еще !. Своих мозгов догадаться не
 хватило?
 
  MP>>>  Мне нужно узнать,
  MP>>>  передали-ли программе параметры в командной строке и если нет, то
  MP>>>  выполнить определенные действия.
  AC>> В данном случае характерная идиома - unless (@ARGV). Ибо если
  AC>> параметров нет (и ТОЛЬКО в этом случае - если $ARGV[0] eq "", то
  AC>> передан один параметр, равный пустой строке) @ARGV пуст.
 
 MP>  Вообщем сделал if(!defined($ARGV[0])) и все заработало без warning'ов.
 MP>  Спасибо за помощь.
 
 И все-таки сделай как следует (unless (@ARGV)). А то потом за тобой этот код
 поддерживать надо будет (в том числе и тебе же самому) - без комментария и не
 поймешь. Потому что ты написал "если не определен первый аргумент", а имел в
 виду "если нет аргументов". Тот факт, что в данном случае это (если без
 странностей типа использования do) эквивалентно, не делает этот понятийный
 переход проще.
 
 -- 
 Artem Chuprina
 Communiware.net
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757
 --- ifmail v.2.15dev5
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Use of uninitialized value   Maksim Pozdeyev   27 Feb 2002 16:04:42 
 Re: Use of uninitialized value   Artem Chuprina   05 Mar 2002 11:12:59 
 Re: Use of uninitialized value   Vladimir Podgorny   05 Mar 2002 11:27:25 
 Re: Use of uninitialized value   Igor Nikolaev   05 Mar 2002 18:00:42 
 Re: Use of uninitialized value   Maksim Pozdeyev   08 Mar 2002 16:06:34 
 Re: Use of uninitialized value   Artem Chuprina   08 Mar 2002 12:54:42 
 Re: Use of uninitialized value   Maksim Pozdeyev   09 Mar 2002 13:54:28 
 Re: Use of uninitialized value   Artem Chuprina   09 Mar 2002 15:50:50 
 Re[2]: Use of uninitialized value   Vlad   09 Mar 2002 21:34:16 
 Re: Use of uninitialized value   Igor Nikolaev   09 Mar 2002 04:15:08 
 Use of uninitialized value   Bulat Ziganshin   10 Mar 2002 02:14:12 
Архивное /ru.perl/11308a1abdb86.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional