Трябва да модифицирам куп скриптове, за да правя еквивалента на включване на прав C стил на умерен брой променливи. След като ги изтеглите, трябва да действа точно така, сякаш е включен ред като този:
my $os_name = "Windows"; #declares the variable AND sets its value
Така че те могат да бъдат използвани в извикващия скрипт. Има малко логика в модула, който условно задава стойностите на тези променливи. Всички скриптове имат строго използване. Типичният обаждащ се има:
use strict;
use File::Basename;
use lib dirname (__FILE__);
use os_specific;
print "DEBUG os_name $os_name\n";
и модулът (os_specific.pm) има:
package os_specific;
use warnings;
use strict;
use Exporter;
our @EXPORT = qw($os_name);
our $os_name="Windows";
1
Но не работи, има предупреждения на етапа на компилиране като:
Global symbol "$os_name" requires explicit package name at caller.pl.
Така че декларацията на променливата в модула не е ефективна в обхвата на повикващия.
Може ли това да се направи или всяка от тези променливи също трябва да бъде декларирана в caller.pl? (Всички отговори, моля, използвайте use strict - без това може да се направи с помощта на require. Това обаче не работи с use strict, защото извежда грешка по време на компилиране.)
Знам, че променливите от модула могат да се използват като $os_specific::os_name, въпросът е как да настроя това, така че да могат да се използват само като $os_name.
Благодаря.
os_specific
иOS_SPECIFIC
не са еднакви случаи. - person choroba   schedule 28.05.2014perl -E "say $^O"
- person dolmen   schedule 28.05.2014