[求教]初学perl遇到非常奇怪的问题

[求教]初学perl遇到非常奇怪的问题

[求教]初学perl遇到非常奇怪的问题
各位前辈能不能帮小弟看看。

我的代码

sub Kind_Mol
{
$Temp=$_[0];
if ($Temp==1) {print 'It is a DNA!';}
if ($Temp==2) {print 'It is a RNA!';}
else {print 'It is a Protein!';}
}
print Kind_Mol(4), "\n";

我如果Kind_Mol的值是1,或者2 ,都能正确显示;
但是如果我的值是4,就显示 It is a Protein!1
后边多了个 1
如果我用 esle {print;}语句替换,结果执行完程序,也有个 1。
不知道为什么,请前辈指点。

谢谢





   

sub Kind_Mol--{--$Te.
sub Kind_Mol
{
$Temp=$_[0];
if ($Temp==1) {print 'It is a DNA!';}
if ($Temp==2) {print 'It is a RNA!';}
else {print 'It is a Protein!';}
return '';
}
print Kind_Mol(4), "\n";
Thanks "antony"--It wo.
Thanks "antony"
It works![CCB]1[/CCB]
[quote]回复给 anthony : .
[quote]回复给 anthony : sub Kind_Mol--{--$Te....[/quote]

could u plz just explain why should we add this "return"?
程序最后一句: print Kin.
程序最后一句: print Kind_Mol(4), "\n";
这里print期待打印Kind_Mol(4)的返回值。但是函数Kind_Mol里没有return语句,于是默认函数中的最后一条语句的值会被返回。最后一条语句是else,当传入4的时候,else返回1,所以1被打印出来。
sub 函数回自动返回最后一.
sub 函数回自动返回最后一条执行的返回值,所以当输入4时,最后执行的是print 'It is a Protein!',同时print成功返回1,这个1就会作为sub函数的返回值返回给caller。所以加上return ‘’,就解决了这个问题。