Arrays 如何获取数组元素';在perl中,通过给定的键指定的值
我对perl一无所知。我想通过关联数组中的键来获取元素的值。 我的阵列是:Arrays 如何获取数组元素';在perl中,通过给定的键指定的值,arrays,perl,Arrays,Perl,我对perl一无所知。我想通过关联数组中的键来获取元素的值。 我的阵列是: my %array = a.a.a.a => "my name", b.b.b.b => "my home", c.c.c.c => "my city"; 当我打印时 print say %array<b.b.b.b>; or print say %array{b.b.b.b}; 打印%array; 或 打印%array{b.b.b.b}; 它显示错误,那
my %array = a.a.a.a => "my name",
b.b.b.b => "my home",
c.c.c.c => "my city";
当我打印时
print say %array<b.b.b.b>;
or
print say %array{b.b.b.b};
打印%array;
或
打印%array{b.b.b.b};
它显示错误,那么我如何才能得到它?
代码测试链接:使用:
my %array = ("a.a.a.a" => "my name",
"b.b.b.b" => "my home",
"c.c.c.c" => "my city");
print $array{"b.b.b.b"};
使用:
关联数组在Perl中被调用 始终使用
严格使用;使用警告在Perl代码中。如果您使用它,您将知道哈希中的键没有被引用
#!/usr/bin/perl
use strict;
use warnings;
my %hash = (
'a.a.a.a' => "my name",
'b.b.b.b' => "my home",
'c.c.c.c' => "my city"
);
要访问一个键的值,您需要执行$hash{$key}
,以便访问b.b.b.b
print $hash{'b.b.b.b'};
关联数组在Perl中被调用
始终使用严格使用;使用警告在Perl代码中。如果您使用它,您将知道哈希中的键没有被引用
#!/usr/bin/perl
use strict;
use warnings;
my %hash = (
'a.a.a.a' => "my name",
'b.b.b.b' => "my home",
'c.c.c.c' => "my city"
);
要访问一个键的值,您需要执行$hash{$key}
,以便访问b.b.b.b
print $hash{'b.b.b.b'};
使用
print say $array{"b.b.b.b"};
或
使用
或
你所写的几乎都是正确的,唯一的错误是没有引用密钥。这仅在本例中是必要的,因为.a
和.b
看起来像Perl6中的方法调用,并且会生成未声明的子例程警告
my %array =
'a.a.a.a' => "my name",
'b.b.b.b' => "my home",
'c.c.c.c' => "my city";
say %array<b.b.b.b>;
say %array{'b.b.b.b'};
这个示例代码在我看来更像Perl6而不是Perl5,所以我想我会提到它以供参考,以防您遵循Perl6教程并尝试使用Perl
编译代码,您编写的代码在Perl6中几乎是有效的,唯一的错误是没有引用键。这仅在本例中是必要的,因为.a
和.b
看起来像Perl6中的方法调用,并且会生成未声明的子例程警告
my %array =
'a.a.a.a' => "my name",
'b.b.b.b' => "my home",
'c.c.c.c' => "my city";
say %array<b.b.b.b>;
say %array{'b.b.b.b'};
这个示例代码在我看来更像Perl6而不是Perl5,所以我想我会提到它以供参考,以防您遵循Perl6教程并尝试使用Perl
编译代码。我的数组中是否有任何问题?您没有使用Perl语法。此外,不要说“it shows error”,而是应该显示错误,以便我们知道它是什么。错误列表:1)在分配给散列或数组时,必须将列表括在括号中,2)必须(在本例中)引用键,因为
是运算符,3)print say
执行相同的操作两次。它还将打印一个1
(来自的返回值,比如说),4)角括号
用于全局或文件句柄,从不用于散列。@TLP我认为OP是按16次写入的(见我的答案),在这种情况下,它只有一个错误。如果不是,那么语法是错误的,但是如果这些是遵循Perl6规则的随机错误,我会感到惊讶。我的数组中有问题吗?您没有使用Perl语法。此外,不要说“it shows error”,而是应该显示错误,以便我们知道它是什么。错误列表:1)在分配给散列或数组时,必须将列表括在括号中,2)必须(在本例中)引用键,因为
是运算符,3)print say
执行相同的操作两次。它还将打印一个1
(来自的返回值,比如说),4)角括号
用于全局或文件句柄,从不用于散列。@TLP我认为OP是按16次写入的(见我的答案),在这种情况下,它只有一个错误。如果不是,那么语法是错误的,但如果这些是遵循Perl6规则的随机错误,我会感到惊讶。@fatih已经改变了我的语法answer@fatih我已经改变了回答,不客气。您可能需要阅读。除非使用strict/warnings,否则无需引用键。最佳做法是使用strict/warnings
。你应该阅读你的答案,基本上是说“做X,然后修复Y”,除了做X导致的Y。所有实际问题(散列声明、散列访问、打印/说)都没有解释,好像它们是偶然的。@robarl如果你在这种情况下不引用键,它将被视为一个表达式而不是一个字符串,这意味着a.a.a.a
将变成aaaa
(4a
由
连接),并且您将得到一个空字警告。严格的警告不会导致问题,它们只会告诉你问题的存在。欢迎你。您可能需要阅读。除非使用strict/warnings,否则无需引用键。最佳做法是使用strict/warnings
。你应该阅读你的答案,基本上是说“做X,然后修复Y”,除了做X导致的Y。所有实际问题(散列声明、散列访问、打印/说)都没有解释,好像它们是偶然的。@robarl如果你在这种情况下不引用键,它将被视为一个表达式而不是一个字符串,这意味着a.a.a.a
将变成aaaa
(4a
由
连接),并且您将得到一个空字警告。严格的警告不会导致问题,它们只会告诉你问题的存在。