首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在这段Perl代码中得到“‘$rocks[’‘附近的语法错误?”

为什么我在这段Perl代码中得到“‘$rocks[’‘附近的语法错误?”
EN

Stack Overflow用户
提问于 2010-01-05 21:09:13
回答 5查看 1.3K关注 0票数 0

当我在Windows XP的Windows5.8上运行这个程序时,我得到一个语法错误:

代码语言:javascript
复制
#!C:\Perl\bin\perl.exe

use strict; # enabled
use warnings;


(my $rocks[0], my $rocks[1]) = qw/Hello World/; # Syntax error near '$rocks['

my $rocks[2] = 'Tom'; # Syntax error near '$rocks['
my $rocks[3] = 'Cat'; # Syntax error near '$rocks['

print $rocks[0];
print $rocks[1];
print $rocks[2];
print $rocks[3];

当我在数组rocks的名称之前使用(@)时,它工作得很好。当我使用$时,如何修复上面的错误?谢谢。

代码语言:javascript
复制
my @rocks = qw{Hello World Tom Cat}; # worked well.
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-05 21:16:05

不要一次又一次地使用my来声明$rocks[0]$rocks[1]等。声明一次数组(@rocks)并使用它。

更正后的代码如下所示:

代码语言:javascript
复制
use strict;
use warnings; 
my @rocks; ## declare the array here

($rocks[0], $rocks[1]) = qw/Hello World/; 
$rocks[2] = 'Tom'; 
$rocks[3] = 'Cat';
票数 11
EN

Stack Overflow用户

发布于 2010-01-05 22:26:41

使用push运算符:

代码语言:javascript
复制
my @rocks;

push @rocks, qw/ Hello World /;
push @rocks, "Tom";
push @rocks, "Cat";

避免显式和冗余的数组索引有助于代码的未来保护。例如,如果你发现你需要改变你的初始化,你不能搞砸一个不存在的数组索引。

票数 4
EN

Stack Overflow用户

发布于 2010-01-05 21:13:12

我认为您需要声明my @rocks,然后在引用$rocks[xxx]时不再使用my

如果您不知道其中有多少元素,可以使用push将新元素添加到(初始大小为0)数组中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2006173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档