免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1953 | 回复: 8
打印 上一主题 下一主题

帮我看下程序怎样错了,谢谢~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-02 09:11 |只看该作者 |倒序浏览
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,但是不知道怎样错了。

论坛徽章:
0
2 [报告]
发表于 2008-12-02 09:23 |只看该作者
1. while(@a) 永远都是真  一直运行下去
2. 数组赋值用 () 不是 []

论坛徽章:
0
3 [报告]
发表于 2008-12-02 09:26 |只看该作者

回复 #1 qinyu2008 的帖子

楼上说的太透彻了。还有,数组遍历最好用foreach

论坛徽章:
0
4 [报告]
发表于 2008-12-02 09:27 |只看该作者
while里来个pop(@a);

论坛徽章:
0
5 [报告]
发表于 2008-12-02 10:12 |只看该作者

怎样输出到数组?

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怎么没有结果?

论坛徽章:
0
6 [报告]
发表于 2008-12-02 10:18 |只看该作者
你什么时候 给@LBA @transfer 赋值了????

论坛徽章:
0
7 [报告]
发表于 2008-12-02 10:40 |只看该作者

赋值错误?

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,语法哪里错了呢?

论坛徽章:
0
8 [报告]
发表于 2008-12-02 11:32 |只看该作者
清华大学有个叫  $张三($LBA)  的人

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

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

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
9 [报告]
发表于 2008-12-02 13:08 |只看该作者
原帖由 qinyu2008 于 2008-12-2 10:40 发表
my @LBA; my @transfer;
               @_=("LBA = 0x123 Sec Cnt = 0x45", "LBA = 0xD60 Sec Cnt = 0x35";

               for($i=0;$i
  1. if(/LBA.*0x(.*)\s+Sec Cnt = 0x(.*)/ 默认使用$_ =~ m/LBA.*0x(.*)\s+Sec Cnt = 0x(.*)/; 但for(;;)循环不设置$_
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP