LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: KornLee

有关Perl问题的讨论请到这里

[复制链接]
 楼主| 发表于 2003-9-27 22:35:30 | 显示全部楼层
最初由 devel 发表
# perl p1
4,3,3
# cat p1
#!/usr/bin/perl5
$a=2;
$b=++$a;
$c=$a++;
printf " $a,$b,$c\n";
#
:ask :ask

嘻嘻~~,我的解释,不知道说得正确与否? ;)
  1. #!perl -w
  2. $a=2;
  3. $b=++$a;
  4. #++运算符放在变量$a之前,则先对变量$a进行增量,然后返回他的值,$b=3,此时,$a也增量至3,即:$a=3
  5. $c=$a++;
  6. #++运算符放在变量$a之后,则先返回$a的值,再对$a进行增量,$c=3,此时,$a增量到4,即:$a=4
  7. print "$a,$b,$c\n";
  8. #现在,$a经过两次的增量,他的值就是4,而不是原来的2.由此看出,++运算符号所在的位置对变量的影响.
复制代码
发表于 2003-9-28 10:29:25 | 显示全部楼层
解释得明白。谢谢“)

请问这错在哪里?

# perl array
Unmatched right bracket at array line 1, at end of line
syntax error at array line 1, near "]"
Execution of array aborted due to compilation errors.
# perl array
Unmatched right bracket at array line 1, at end of line
syntax error at array line 1, near "]"
Execution of array aborted due to compilation errors.
# cat array
]#!/usr/bin/perl5
@num=(11,33,2,dd,0);
printf "@num\n";
$name="dear";
@list=(1..12,"hello",$name,"hello $name",4+6,1-2,2*3);
printf "@list\n";
@a=(-2.5..5.3,a..z,A..Z);
printf "@a\n";
printf "next\n";
@b=(1,"world",@num);
printf "@b\n";
printf "next\n";
@c=@num;
printf "@c\n";

#
--------------------------------
thanks
 楼主| 发表于 2003-9-28 10:46:27 | 显示全部楼层
]#!/usr/bin/perl5
如果没有[的话,没什么问题呀,,,
跟shell脚本的规则相似,perl首行的要求也是:
#!/usr/bin/perl或#!perl
发表于 2003-9-28 13:33:14 | 显示全部楼层
谢谢版主。我太大意了.

又有问题了。
# perl t1
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-5 -4 -3 -2 -1 0 1 2 3
# cat t1
#!/usr/bin/perl5
@num=(-1.2..5);
printf "@num\n";
@a=(-1.5..5);
printf "@a\n";
@b=(-1.7..5);
printf "@b\n";
@c=(-1.2..5.3);
printf "@c\n";
@d=(-1.2..5.5);
printf "@d\n";
@e=(-1.2..5.8);
printf "@d\n";
@f=(-5.5..3.8);
printf "@f\n";

#
怎么都一样,那怎么输出小数的?
 楼主| 发表于 2003-9-28 14:09:36 | 显示全部楼层
范围运算符 .. 只能适用整数
对小数的输出,可以用
printf "%.2f","4.1415926\n"
3.14
发表于 2003-9-28 16:47:37 | 显示全部楼层
范围运算符对于实数运算时

(1.5..5.8) = (1,2,3,4)
(5.8..1.3) = ()
发表于 2003-9-28 17:53:47 | 显示全部楼层
谢谢你们俩,我懂了。
请问错在哪里?
16  @array=(1,2,3,4,5);
    17  ($a,$b,$c,$d,$e)=@array;
    18  printf "$a\n";
    19  printf "$b\n";
    20  printf "$c\n";
    21  printf "$d\n";
    22  printf "$e\n";
    23  printf "next------------------\n";
    24  printf "@array[0]\n";
    25  @array[2]=11;
    26  printf "@array[2]\n";
    27  @array[1]++;
    28  printf "@array[1]\n";
    29  ++@array[1];
    30  printf "@array[1]\n"
    31  @array[1]=2;
    32  --@array[1];
    33  printf "@array[1]\n";
    34  @array[1]--;
    35  printf "@array[1]\n";
    36  printf "******************\n";
    37  @array[1]=2;
    38  @array[1]+=5;
    39  printf "@array[1]\n";
    40  @array[1]=2;
    41  @array[1]*=5;
    42  printf "@array[1]\n";
    43  @array[1]=2;
    44  @array[1]/=5;
    45  printf "@array[1]\n";

# perl array
Array found where operator expected at array line 31, at end of line
        (Missing semicolon on previous line?)
syntax error at array line 31, near "@array"
Execution of array aborted due to compilation errors.
#
我看了很久都不明白错在哪里。要是又缺了什么的就脸红了。呵呵~:p :p :p
有:
# cat -n array|less
     1  #!/usr/bin/perl5
 楼主| 发表于 2003-9-28 18:02:25 | 显示全部楼层
好乱~~~. :p
没看见提示吗?!
...
syntax error at array line 31, near "@array"
Execution of array aborted due to compilation errors.
发表于 2003-9-28 19:00:51 | 显示全部楼层
不懂
好象是说line31
我看了,没什么错啊。
举个例子。
#!/usr/bin/perl5
@a=(1,2,3);
--@a[1];
printf "@a[1]\n";
@a[1]--;
printf "@a[1]\n";
@array[2]*=5;
printf "@a[2]\n";

# perl t2
1
0
3
#
这里怎么不会错了。
最后的输出怎么是3?? 不明白。
发表于 2003-9-28 20:47:18 | 显示全部楼层
最初由 devel 发表
#!/usr/bin/perl5
@a=(1,2,3);
--@a[1];
printf "@a[1]\n";
@a[1]--;
printf "@a[1]\n";
#####@array[2]*######=5;
printf "@a[2]\n";

# perl t2
1
0
3
#
这里怎么不会错了。
最后的输出怎么是3?? 不明白。


192# cat 4.pl
#!/usr/bin/perl5
@a=(1,2,3);
--@a[1];
printf "@a[1]\n";
@a[1]--;
printf "@a[1]\n";
@a[2]=5;
printf "@a[2]\n";

192#
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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