|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/11477c3f75bce.html, оценка из 5, голосов 10
|