perl tips

sub first { print 'First' }
sub second {print 'Second'}
print (2, 3, first, second);

実行結果

FirstSecond2311

サブルーチンの戻り値が指定されていない場合は、最後に評価された値。
print 'First'の評価値voidであるため、関数の戻り値(1)が返る。

sub add
{
print "Sum : ", return ($_[0] + $_[1]);
}

print add(1,2);
print (4+5) +1 , "\n";

実行結果

print (...) interpreted as function at ./tmp2.pl line 12.
Useless use of addition (+) in void context at ./tmp2.pl line 12.
Useless use of a constant in void context at ./tmp2.pl line 12.
39[%perl@perl]$

add関数のSum文字列が評価されないのは当たり前ですが、
1. print()の評価値voidに1を加えようとしている
2.最後の改行文字は単に無用の定数として切り捨てられる