我試圖執行一個Perl CGI腳本明確包的名字,但我得到一個錯誤:全局符號「%formsequence」需要在37行
Global symbol "%formsequence" requires explicit package name at line 37.
我做了一些研究,發現use strict
力量我在我使用它們或存儲任何數據之前聲明變量,但在我的程序中我已經聲明瞭它們,這就是爲什麼我不明白這個錯誤。這是我的腳本:
#!/usr/bin/perl -w
use strict;
my %errors;
my %form;
my @formsequence;
my %fields = (
"lname" => "Last Name",
"phone" => "Phone",
"fname" => "Fist Name"
);
my %patterns = (
"lname" => '[A-Z][a-z]{2,50}',
"phone" => '\d{3}-\d{3}-\d{4}',
"fname" => '[A-Z][A-Za-z]{2,60}'
);
@formsequence = ("lname", "phone", "phone");
print "content-type/html\n\n";
if ($ENV{REQUEST_METHOD} eq "POST") {
&readformdata;
if (&checkrequiredfields) {
print "Form Data validated successfully!";
}
else {
foreach (keys (%fields)) {
if ($fields{$_} != $formsequence{$_}) { <-- line 37
$errors{$_}="Not in correct sequence\n";
}
}
}
您聲明瞭一個數組,但稍後嘗試訪問它,就像它是一個散列一樣。 – dsm
@dsm我想遍歷數組,所以我必須做'$ formsequence {$ _}'。 –
@JohnAmbers你不能做'$ formsequence {$ _}',因爲你沒有一個名爲'%formsequence'的散列。你只有一個名爲'@ formsequence'的數組(你可以用'$ formsequence [$ integer]''來訪問這個數組。 –