LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1143|回复: 7

比较无聊中。发个题目。有兴趣的来看看。

[复制链接]
发表于 2004-2-15 01:23:05 | 显示全部楼层 |阅读模式

  1.     @array=(1..5);
  2.     unshift @array;
  3.     unshift (6..10);
  4.     while($i=shift)
  5.       print $i;
  6.      }

  7.     foreach(shift){
  8.        print;
  9.      }
复制代码

发表于 2004-2-15 01:45:39 | 显示全部楼层

回复: 比较无聊中。发个题目。有兴趣的来看看。

  1.     @array=(1..5);
  2.     unshift @array;  #
  3.     unshift (6..10); #
  4.     while($i=shift)  #
  5.       print $i;
  6.      }
  7.     foreach(shift){ #
  8.        print;
  9.      }
复制代码

我感觉有4处错误~
 楼主| 发表于 2004-2-15 01:47:28 | 显示全部楼层
哈。说出来看看
发表于 2004-2-15 01:55:03 | 显示全部楼层
2处是跟unshift有关的,因为对数组头部进行unshift操作,unshift他的参数应该是一个列表,否则将返回一个错误的undef
另2出是那个循环里的条件表达式,我感觉不对劲,当然在while块中少了一个{,不知道我说的...:p
 楼主| 发表于 2004-2-15 02:07:04 | 显示全部楼层
unshift 操作的是默认数值。可以一个参数
比如 unshift (1..9);
while 属于笔误。哈。丢掉了。
发表于 2004-2-15 02:12:33 | 显示全部楼层
最初由 icps 发表
unshift 操作的是默认数值。可以一个参数
比如 unshift (1..9);
while 属于笔误。哈。丢掉了。

但是根据上下文,是要出错的~,也就是说1-9这几个元素放在哪个数组/列表的前面? 我认为这样
unshift @array,1..9;比较合理~,至于那两个循环,请解释解释,谢谢~ ;)
呵呵~,不早了,明天再说吧~~:sleep:thank
发表于 2004-3-16 21:08:45 | 显示全部楼层

回复: 比较无聊中。发个题目。有兴趣的来看看。

最初由 icps 发表

  1.     @array=(1..5);
  2.     unshift @array;
  3.     unshift (6..10);
  4.     while($i=shift)
  5.       print $i;
  6.      }

  7.     foreach(shift){
  8.        print;
  9.      }
复制代码

以上的脚本有很多错误,函数的用法错误,正确的是这样:

  1. #!/usr/bin/perl -w
  2. #perl v5.8.0
  3. @arrayA=(1..5);
  4. @arrayB=(6..10);
  5. unshift (@arrayA,@arrayB);#把@arrayB加到@arrayA里。
  6. $count=@arrayA;#计数@arrayA.
  7. print "$count\n";
  8. $a=0;
  9. while($a<$count) {
  10.     print "$arrayA[$a]  " ;
  11.     $a += 1 ;
  12. }
  13. foreach(@arrayA){
  14.       print;
  15. }
  16. print "\n";
复制代码
发表于 2004-3-16 21:58:35 | 显示全部楼层

回复: 比较无聊中。发个题目。有兴趣的来看看。

最初由 icps 发表

  1.     @array=(1..5);
  2.     unshift @array;
  3.     unshift (6..10);
  4.     while($i=shift)
  5.       print $i;
  6.      }

  7.     foreach(shift){
  8.        print;
  9.      }
复制代码

我补充一点吧,while以及foreach这两个上下文中的shift是无意义的,假如$_以及@_之前并无赋值,那都会返回undef,循环没有开始就退出了;而且和上面的操作也不相关。
我想楼主的意思是说把unshift的对象默认为@_吧,这样应该是不行的,unshift必须要有两个参数,否则你可能会得到perl的警告如:Type of arg 1 to unshift must be array (not null operation)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表