Perl 为什么我的($i)索引不起作用?

Perl 为什么我的($i)索引不起作用?,perl,indexing,Perl,Indexing,我的节目是 #!\usr\bin\perl -w my @one= ("sun", "moon", "star"); my $three="SON"; my $flag= 0; my $tester_1=0 ; my $tester_2= 0; my $i= 0; push (@one, $three); print @one; print join(" ", @one); while (@one[$i]= $three) { #flag 1 if (@one[$

我的节目是

#!\usr\bin\perl -w

my @one= ("sun", "moon", "star");
my $three="SON"; 
my $flag= 0;
my $tester_1=0 ; 
my $tester_2= 0;
my $i= 0;

push (@one, $three);

print @one; 
print join(" ", @one);

while (@one[$i]= $three) 
{
    #flag 1
    if (@one[$i] ne "moon"&& @one[$i] ne "star") 
    {
        $tester_1= 1; 
    }

    ##flag2 
    if ($i<= 99) 
    {
        $tester_2=1;
    }

    #real condition 
    if ($tester_1= 1)
    { 
        if ($tester_2= 1)   
        {
            print @one[$i];
            $i++; 
        }
    }
}
#\usr\bin\perl-w
我的@one=(“太阳”、“月亮”、“星星”);
我的$3=“儿子”;
我的$flag=0;
my$tester_1=0;
my$tester_2=0;
我的$i=0;
推(一元三角);;
打印@one;
打印连接(“,@one”);
而(@1[$i]=$3)
{
#标志1
如果(@one[$i]ne“月亮”和&@one[$i]ne“星星”)
{
$tester_1=1;
}
##旗子2

if($i似乎问题在于,您在比较中使用了“=”(例如,
if($tester\u 1=1)
它应该在哪里
if($tester\u 1==1)

您还应替换:
while(@one[$i]=three)
while($one[i]=three)

if(@one[$i]ne“moon”和&one[$i]ne“star”)
if($one[$i]ne“moon”和&one[$i]ne“star”)

您显示已启用警告;您的代码会生成警告。修复它们,您就解决了问题。如果您无法理解警告,请尝试添加
使用诊断;

当然
while(@one[$i]=$three)
应该是
while(@one[$i]=$three)
不,应该是while($one[1]eq$3)。这个Perl,她很复杂。你为什么忽视Perl给你的警告?????另外,总是使用
use strict;
@user1964232:这就是你想要的输出吗?
#!\usr\bin\perl 
use strict;
use warnings;

my @one= ("sun", "moon", "star");
my $three="SON"; 
my $flag= 0;
my $tester_1=0 ; 
my $tester_2= 0;
my $i= 0;

push (@one, $three);    
print @one,"\n"; 
print join(" ", @one),"\n";   

while ($one[$i] eq $three) 
{
 if ($one[$i] ne "moon"&& $one[$i] ne "star") 
 {
    $tester_1= 1; 
 }
 if ($i<= 99) 
 {
    $tester_2=1;
 }
 if ($tester_1 == 1)
 { 
    if ($tester_2 == 1)   
    {
        print $one[$i];
        $i++; 
    }
 }
}
sunmoonstarSON
sun moon star SON