我正在使用以下语法得到警告-

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/

10-15 06:20
查看更多