作者WalkingIce (会走路的冰块)
看板perl
标题Re: [问题] 关於标准输出
时间Tue May 15 16:02:48 2007
※ 引述《tgbsa (每天进步一点点)》之铭言:
: 小弟我自学还是个刚写perl的新手,之前都在写C的程式
: 可是对於perl真摸不透他,有些东西感觉上有点不能接受冏
: 想请问各位为什麽
: print (int(rand 42)+1) , "\n" ;
: 这样没有换行效果
: print "\n" , (int(rand 42)+1) ;
: 这样却有了...
: 另外如果把上面那行写成
: $num = (int(rand 42)+1);
: print $num ,"\n" ;
: 却又变成有换行效果了,真是奇怪!!
: $num 跟 (int(rand 42)+1) 的东西不是相等吗?
: 先谢谢各位了!!
我想应该是串列语境的关系
(int(rand 42)+1) <-- 前後加上括号,变成串列 (list) 了!
如果改成 print int(rand 42)+1,"\n";
输出後就会断行
那为什麽串列这麽做就会出错呢?刚刚试了一下
print (1,2,3,4,5),"\n";
输出结果是 12345 然後没断行
网路上找了一下资料,应该是这个原因
print (1,2,3),"\n";
相当於 (print (1,2,3)),"\n";
就相当於 1,"\n";
因为 print 完之後无误,函式回传 1
$return = print (1,2,3); //return = 1
$return = print (1,2,3) * 5; //return = 5
$return = print 5 * (1,2,3); //return = 1
$return = 5 * print (1,2,3); //return = 5
--
我想你会衰成这样都是我害的
---- Tizzy Mac
紧张的麦金塔?这是谁(._.?)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.128.98.6
1F:推 tgbsa:谢谢 05/16 13:29