您好我在perl中有以下代码。我对这门语言很陌生:
#!/usr/bin/perl
use strict;
use warnings;
my $date = $ARGV[0];
my $symbols = ('A', 'B', 'C');
foreach $symbol (%symbols)
{
my $print = "$symbol";
print "$print";
}
获得:
Uselsss use of a constant in void context at (line of %symbols)
and
Global symbol "$symbol requires explicit package name at ..."
and
Global symbol "%symbols" require explicit package. name at ..."
答案 0 :(得分:7)
只需要一个数组就可以使用哈希。
#!/usr/bin/perl
use strict;
use warnings;
my $date = $ARGV[0];
my @symbols = ('A', 'B', 'C');
foreach my $symbol (@symbols)
{
print $symbol;
}
答案 1 :(得分:6)
1)您的$symbols
应为@symbols
,因为它是一个数组。在foreach
的后面,%symbols
应为@symbols
。
2)未声明$symbol
。请改为foreach my $symbol...
。
答案 2 :(得分:3)
您声明$symbols
而不是@symbols
,因此它将其置于标量上下文中并将其设置为“C”。然后,您尝试循环使用您从未创建过的具有相同名称的哈希。请记住,$a
(标量),@a
(数组)和%a
(哈希)都是不同的。
这就是你想要的:
my @symbols = qw/ A B C /; ## the same as ( 'A', 'B', 'C' )
foreach my $symbol ( @symbols ) {
print $symbol;
}
非常快:
my @symbols = qw/ A B C /; ## new array with three values
my $symbols = qw/ A B C /; ## new scalar that is the last element of the "A B C" list ($symbols = 'C')
my %symbols = (
A => 1,
B => 2,
C => 3,
); ## a hash with three key/value pairs
答案 3 :(得分:2)
您的foreach正在查看名为%symbols
的不存在的哈希中的每个符号,而不是您的数组@symbols
。
foreach $symbol (@symbols)
{
my $print = "$symbol";
print "$print";
}