簡體   English   中英

為什么在此Perl代碼中出現“'$ rocks ['附近的語法錯誤””?

[英]Why do I get “Syntax error near '$rocks['” in this Perl code?

在Windows XP的ActivePerl 5.8上運行此程序時,出現語法錯誤:

#!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的名稱前使用( @ )時,它運行良好。 使用$時,如何解決以上錯誤? 謝謝。

my @rocks = qw{Hello World Tom Cat}; # worked well.

不要一次又一次地使用my聲明$rocks[0]$rocks[1]等。一次聲明數組( @rocks )並使用它。

更正后的代碼是這樣的:

use strict;
use warnings; 
my @rocks; ## declare the array here

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

使用push操作符:

my @rocks;

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

避免顯式和冗余的數組索引可幫助您的代碼適應未來需求。 例如,如果發現需要更改初始化,則無法破壞不存在的數組索引。

我認為您需要聲明my @rocks ,然后在引用$rocks[xxx]時不再使用my

如果您不知道其中有多少個元素,可以使用push將新元素添加到(最初為0大小)數組中。

您多次聲明@rocks 嘗試這樣的事情:

my @rocks;

$rocks[0] = 'Tom';
$rocks[1] = 'Cat';

等等

您可以首先在頂部將數組聲明為:

my @rocks;

並從其他所有地方刪除我的聲明。

您的代碼變為:

#!C:\Perl\bin\perl.exe
# ActivePerl 5.8 based
use strict; # enabled
use warnings;

my @rocks;

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

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

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

為什么不直接將它放入@rocks呢?

use strict;
use warnings;

my @rocks = qw'Hello World';

my $rocks[2] = 'Tom';
my $rocks[3] = 'Cat';

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM