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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     15 Dec 2003  02:14:58
 To : Sergey Gernichenko
 Subject : Re: use strict
 -------------------------------------------------------------------------------- 
 
 Sergey Gernichenko -> Konstantin Tokar  @ Sun, 14 Dec 2003 01:42:44 +0300:
 
  >>>  SG>> Global symbol "$price" requires explicit package name at
  >>>  SG>> summ.pl line 11. поясните, плз.
  >>>  AV> Очень примерная трактовка: "Глобальная переменная требует
  >>>  AV> определения имени пакета, которому она принадлежит". Выход -
  >>>  AV> поставить ее как локальную с "my".
  >>> Это первое, что пришло мне в голову, но описание переменной с
  >>> помощью my не привело к исчезновению ошибки...
  KT>> Поэтому надо приводить текст скрипта. Тебе надо ошибку найти, или
  KT>> телепатов?
  SG> Честно говоря, мне бы самому хотелось ошибку найти, но для этого надо
  SG> *четко* уяснить смысл этого сообщения. Я, честно говоря, сначала не понял
  SG> его, т.к. описание с помощью my ни к чему не привело. Вот полный текст
  SG> скрипта:
 
  SG> === begin Windows Clipboard ===
  SG> #!perl -w
  SG> use strict;
 
  SG> require "12_2003_price.RUB.inc.pl";
  SG> #my $sum={};
  SG> $sum{$_}=0 for (qw(BB DC PC));
  SG> while(<>){
  SG>   chomp;
  SG>   my ($key, $count)=split(/;/);
  SG>   $count ||= 1;
  SG>   print "$key: $count ";
  SG>   if (defined ($price->{$key})){
  SG>     for (qw(BB DC PC)){
  SG>       print " : $_ ", ($count * ($price->{$key}->{$_} || 0 ));
  SG>       $sum{$_} += $count * ($price->{$key}->{$_} || 0 );
  SG>     }
  SG>     print " - $price->{$key}->{'name'}\n";
  SG>   }
  SG>   else {print " - not found\n";}
  SG> }
 
  SG> print "BB: $sum{'BB'}, DC: $sum{'DC'}, PC: $sum{'PC'}\n";
  SG> === end Windows Clipboard ===
 
  SG> так... по поводу $sum я ошибся... задавал my $sum... а надо было my
  SG> %sum...  А вот с ссылкой на хеш $price как быть? она определяется
  SG> во включаемом файле таким образом:
  SG> $price={'5543' => {'DC' => 66, 'PC'=> 77, 'OP' => 55}};
  SG> ну и т.д.
 
 Hе, можно, конечно, и так делать...  Я бы, честно говоря, раз уж у тебя
 $price - константа, написал бы во включаемом файле
 
 sub price { {'5543' => {'DC' => 66, 'PC'=> 77, 'OP' => 55}} };
 
 а в программе, соответственно,
 
 price()->{$key}->{'name'}...
 
 Hо тебе сейчас надо не практический совет, а теоретический.  Прочти
 Programming Perl.
 
 -- 
 Artem Chuprina
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757
 --- ifmail v.2.15dev5.1
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 use strict   Sergey Gernichenko   11 Dec 2003 17:49:48 
 Re: use strict   Konstantin Tokar   11 Dec 2003 20:10:53 
 use strict   Andrew Velikoredchanin   11 Dec 2003 20:20:46 
 Re: use strict   Sergey Gernichenko   12 Dec 2003 11:14:14 
 Re: use strict   Konstantin Tokar   12 Dec 2003 23:22:23 
 Re: use strict   Sergey Gernichenko   14 Dec 2003 02:42:44 
 use strict   Andrew Alakozow   14 Dec 2003 10:56:51 
 Re: use strict   Artem Chuprina   15 Dec 2003 02:14:58 
 Re: use strict   Alexey Mahotkin   15 Dec 2003 22:29:30 
 Re: use strict   Sergey Gernichenko   16 Dec 2003 10:03:34 
 Re: use strict   Artem Chuprina   16 Dec 2003 15:54:01 
 Re: use strict   Sergey Gernichenko   18 Dec 2003 00:38:20 
 Re: use strict   Artem Chuprina   18 Dec 2003 15:16:18 
 Re[2]: use strict   Mikhail Polykovsky   18 Dec 2003 15:23:44 
 Re: use strict   Artem Chuprina   16 Dec 2003 15:53:27 
 use strict   abrasha shapirus   11 Dec 2003 19:27:28 
 Re: use strict   Jahor Miadzviedziew   12 Dec 2003 13:03:47 
Архивное /ru.perl/11477c3f75bce.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional