帮我看下程序怎样错了,谢谢~~

帮我看下程序怎样错了,谢谢~~

my @LBA; my @transfer;
                     @a=["LBA = 0X123 Sec Cnt = 0x45",
                     "LBA = 0XD60 Sec Cnt = 0x35",];

                     while(@a)
                     {
                         if(/LBA.*0x(d+|w+).*Sec.*0x(d+|w+)/)
                         {$LBA=$1; $transfer=$2;
                         print $LBA;
                         print $transfer; }
                     }

                         print @LBA;
                         print @transfer;
请问上述代码哪里出错了,报错是if,但是不知道怎样错了。
1. while(@a) 永远都是真  一直运行下去
2. 数组赋值用 () 不是 []
楼上说的太透彻了。还有,数组遍历最好用foreach
while里来个pop(@a);
my @LBA; my @transfer;
                @a=("LBA = 0x123 Sec Cnt = 0x45", "LBA = 0xD60 Sec Cnt = 0x35");

                foreach(@a)
                     {
                         if(/LBA.*0x(.*)\s+Sec Cnt = 0x(.*)/)
                         {$LBA=$1; $transfer=$2;
                         print $LBA;
                         print $transfer;
                         }
                         else { print "error";}
                     }
print @LBA; print @transfer;

结果:123 45 D60 35
但是print @LBA; print @transfer怎么没有结果?
你什么时候 给@LBA @transfer 赋值了????
my @LBA; my @transfer;
               @_=("LBA = 0x123 Sec Cnt = 0x45", "LBA = 0xD60 Sec Cnt = 0x35");

               for($i=0;$i<@_;$i++)
                     {
                        { if(/LBA.*0x(.*)\s+Sec Cnt = 0x(.*)/)
                         {$LBA[$i]=$1; $transfer[$i]=$2;
                         print $LBA[$i];
                         print $transfer[$i];
                         }
                         else { print "error";}
                         }
                     }

这样可以实现赋值到数组吗?结果是error,语法哪里错了呢?
清华大学有个叫  $张三($LBA)  的人

县城有个叫  @张三(@LBA)   的工厂

虽然都叫张三   两者之间什么关系都没有


QUOTE:
原帖由 qinyu2008 于 2008-12-2 10:40 发表
my @LBA; my @transfer;
               @_=("LBA = 0x123 Sec Cnt = 0x45", "LBA = 0xD60 Sec Cnt = 0x35";

               for($i=0;$i



[Copy to clipboard] [ - ]
CODE:
if(/LBA.*0x(.*)\s+Sec Cnt = 0x(.*)/ 默认使用$_ =~ m/LBA.*0x(.*)\s+Sec Cnt = 0x(.*)/; 但for(;;)循环不设置$_