我正在使用以下语法得到警告-
my %data_variables = ("Sno." => (5,0),
"ID" => (20,1),
"DBA" => (50,2),
"Address" => (80,3),
"Certificate" => (170,4),
);
但是在使用类似语法时,我没有收到类似警告。
my %patterns = ("ID" => ("(A[0-9]{6}?)"),
"Address" => (">([^<]*<br[^>]+>[^<]*)<br[^>]+>Phone"),
"Phone" => ("Phone: ([^<]*)<"),
"Certificate" => ("(Certificate [^\r\n]*)"),
"DBA" => ("<br[^>]+>DBA: ([^<]*)<br[^>]+>"),
);
最佳答案
您需要将括号更改为方括号:
my %data_variables = (
"Sno." => [5,0],
"ID" => [20,1],
"DBA" => [50,2],
"Address" => [80,3],
"Certificate" => [170,4],
);
哈希值必须是标量值,因此您的数字列表需要存储为数组引用(因此,方括号)。
在您的第二个示例中,括号是多余的,只会使事情变得困惑。每组括号仅包含一个标量值(一个字符串),每个标量值都成为一个哈希值。
关于perl - 警告-Perl中的 "Odd number of elements in hash assignment",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3574744/