- 论坛徽章:
- 0
|
{:3_191:}好久没有写了,生疏了:
- 第一题:sub myfunc {
- # $x = ...;
- if ( $x ) {
- return 1;
- } else {
- return;
- }
- }
- 答:精简为:
- sub myfunc{
- $x?return 1:return;
- }
- 第二题:
- $x=()结果是什么?列表位于标量上下文是什么情况?()是不是用来创建空的list?请解释原因。
- 答:
- $x=()设置为undef,这句可以清空$x中存放的引用值、对象等等,一般用来释放
- 列表位于标量上下文返回是元素个数
- ()可以用来创建空的list, ((),(),())=()
- 第三题:1,2,3,5,6,7,8 如何合并成1-3,5-8?
- 答:
- my @array=(1,2,3,5,6,7,8);
- my $head=shift @array;
- my $mid=$head;
- my @resume;
- while (@array){
- my $x=shift @array;
- if ($x-1==$mid){
- $mid=$x;
- }else{
- push @resume,$head."-".$mid;
- $head=$x;
- $mid=shift @array;
- }
- push @resume,$head."-".$x unless (@array);
- }
- print join(",", @resume);
-
- 第四题:@x=(5,7,9); $x[1]与@x[1]的区别是什么?
- 答:
- $x[1]是指 @x数组中第二个元素,返回是一个值
- @x[1]是包含数组片段 $x[1]的数组,返回的是个数组
- 第五题: 用最短和优的perl代码对当前目录下的文件和子目录按修改时间进行排序。
- print join "\n", ( sort {(-M $a)<=>(-M $b)} grep{ $_ ne ".."} (glob("*"),glob(".?*")));
- 第六题 传入一串数字并返回所有大于平均值的数字。
- 答:
- my @k=split ",",shift;
- my $resume;
- my $n=0;
- foreach my $i(@k){
- $n++;
- $resume=$resume+$i;
- }
- $resume=$resume/$n;
- my @rr=grep { $_ >$resume} @k;
- print Dumper \@rr;
- 第七题:
- 答:
- my ($k,$i);
- print "please input the number:";
- while ($i=<STDIN>){
- chomp $i;
- $k=int(1+rand 100);
- print "the randam is $k \n";
- exit if ($i eq "quit") or ($i eq "exit") or ($i =~/^\s+$/);
- next if ($i !~/\d+/);
- $i>$k? print "too high\n": print "too low\n";
- print "right, you are hero~\n";exit if $i== $k;
- next;
- }
复制代码 |
|