LinuxSir.cn,穿越时空的Linuxsir!

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

怎么会变成这样啊 ?

[复制链接]
发表于 2003-6-7 11:25:51 | 显示全部楼层 |阅读模式
print 6*(5+4),\n;

[root@Snoopy learns]# perl 5
54SCALAR(0x804c8d4)

结果怎么变成这样了啊 ??本来我想得出这个数字后就换行的?

这样如何将它换行呢??
发表于 2003-6-7 11:50:42 | 显示全部楼层
把逗号换成句号试试
print 6 * (5 + 4) . "\n";
 楼主| 发表于 2003-6-7 14:16:34 | 显示全部楼层
这里,和.分别在于哪里呢?


还有个一是,print(4+5)+1,"\n";

的结果怎么还是9啊 ???而且不会换行呢???可以简单解释一下吗?

文章上我看不懂!!!
 楼主| 发表于 2003-6-7 14:50:48 | 显示全部楼层
还有一个奇怪问题,文章说的结果是c2,可我是这样

print ++($foo='b1');可我的结果是b2,为什么啊??

还有一个是print ($foo='zz');就会出现aaa,

可我变一下结果太离扑了,,print ($foo='zzz1zz');

这里结果为什么会是1呢???????其它z怎么没有了呢??
发表于 2003-6-7 15:30:10 | 显示全部楼层
一、print 6 * (5 + 4) . "\n";和print 6 * (5 + 4) . "\n";都打印54,不过两个语句不一样,print是可变参数的函数,第一个语句先计算+,再计算*,得到54再计算.(连接字符串),得到"54\n",print作为一个参数调用,第二个语句是作为两个参数调用。
另:你最好加上-w参数,就可以看到代码的错误了,你第一个语句在\n两边没有加引号。
发表于 2003-6-7 15:36:42 | 显示全部楼层
print(4+5)+1,"\n";错误,
print这种内置的函数有两种调用方式,一种是带括号的,如print("hw\n");,一种是不带括号的,如print "hw\n";你这样写使perl认为你用的是带括号的调用方式,而后面的+1,"\n";不是有效的语句,所以错误。
再说一遍,加上-w参数。
发表于 2003-6-7 15:51:17 | 显示全部楼层
print ++($foo='b1');确实是b2,不可能是c2,
另外,推荐写成:
$foo='b1';
print ++$foo, "\n";
比较好。
你可以建立一个pe文件,第一行写成
#! /usr/bin/perl -w
下面写代码,每次改一下下面的代码就行了,
再给pe加上运行权限:
chmod +x pe
以后直接运行pe就行了。
发表于 2003-6-7 15:58:09 | 显示全部楼层
print ($foo='zzz1zz')没有问题呀,你是不是用了++,如果是++的话,是因为perl把'zzz1zz'转换成数值了,转换的结果是0,所以输出的结果就是1,你可以用'1zzz'或'zzzazz'试试。
推荐《perl语言入门》O'Reilly出的,中文版是电力出的,洪峰译。
发表于 2003-6-8 09:30:56 | 显示全部楼层
呵呵,楼主要是愿意看书的话,早就是高手了。
 楼主| 发表于 2003-6-8 13:22:06 | 显示全部楼层
谢谢你,我现在就在看书,,,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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