Próbuję dowiedzieć się, jak mogę używać tych samych zmiennych w moich blokach if/else. Na przykład:Perl zmienna zakres i przy użyciu tych samych zmiennych w bloku if/else
$var1
$var2
$var3
if(condition) {
...
}
else {
...
}
Potrzebuję uzyskać dostęp do $ vars1, 2 i 3 w blokach, ale nie mogę. Myślę, że mam problem z zakresu. Próbowałem je globalnie, ale widzę wiele błędów i program nie działa poprawnie. czego mi brakuje?
Oto mój kod. Moim problemem jest to, że zmienne na dole (@varList, itp.) Są potrzebne dla serwera, ponieważ jest to skrypt na serwerze apache, który również używa CGI. to wypluwa błędy tak:
[error] Global symbol "$questionslist" requires explicit package name at /home/megaoff/www/vi
ewquestions.dhtml line 46.\nGlobal symbol "$site" requires explicit package name at /home/megaoff/www/viewquestions.dhtm
l line 46.\nGlobal symbol "$xs" requires explicit package name at /home/megaoff/www/viewquestions.dhtml line 46.\nGlobal
symbol "$username" requires explicit package name at /home/megaoff/www/viewquestions.dhtml line 46.\n
#!/usr/bin/perl
use strict;
use CGI;
use BarryP;
my $pagev = BarryP::makeP("noextracook", 1);
my $bvga = $pagev->{'vga'};
my %vga = %$bvga;
my $cgi = CGI->new;
my $usePage = "answerquestions.html";
my $anslist = "/home/megaoff/www/limages/anslist.txt";
my $unanslist = "/home/megaoff/www/limages/unanslist.txt";
my $action = $vga{"action"};
if($action eq 'adminmode') {
my @a_list = $pagev->listFile($anslist);
my %list = map { split(/\t/, $_, 2) } @a_list;
}
else {
my @u_list = $pagev->listFile($unanslist);
chomp @u_list;
my %questions = map { $_ => '' } @u_list;
my $question = $cgi->param('question');
my $answer = $cgi->param('answer');
chomp($question, $answer);
open(my $ANS, '>>', $anslist) or die "Can't open file $anslist: $!";
print $ANS "$question\t$answer\n";
close($ANS) or die "Can't close file $anslist: $!";
delete $questions{$question};
open(my $UNANS, '>', $unanslist) or die "Can't open file $unanslist: $!";
print $UNANS "$_\n" foreach keys %questions;
close($UNANS) or die "Can't close file $unanslist: $!";
my $questionslist = join("<br>", @u_list);
my $site = $pagev->{'site'};
my $xs = $pagev->{'xs'};
my $username = $pagev->{'username'};
}
my @varList = ('questionslist', $questionslist, 'action', $action, 'site', $site, 'xs', $xs, '$username', $username);
$pagev->pageHeader($usePage, @varList);
"Podany przykład kodu" nic nie mówi. Podaj coś bardziej znaczącego, np. Kod, nad którym pracujesz, abyśmy mogli Ci pomóc. –
W pokazanym przykładzie wszystkie trzy zmienne byłyby w zasięgu. –
Zrobię, daj mi kilka sekund. –